Junior — Middle
Можете ли да обясните концепцията за патърна 'посетител' и неговото приложение в проектирането на програми?
sobes.tech AI
Отговор от AI
Моделът «посетител» (Visitor) позволява отделянето на алгоритмите от обектите, върху които се изпълняват. Той дефинира операция, която се изпълнява върху елементите на структура от обекти, позволявайки добавянето на нови операции без промяна на самите класове на елементите.
Приложения:
- Когато е необходимо да се изпълняват различни операции върху обекти на сложна структура.
- Когато често се добавят нови операции, но структурата на обектите остава стабилна.
Пример на C#:
interface IVisitor {
void Visit(ElementA element);
void Visit(ElementB element);
}
interface IElement {
void Accept(IVisitor visitor);
}
class ElementA : IElement {
public void Accept(IVisitor visitor) {
visitor.Visit(this);
}
}
class ElementB : IElement {
public void Accept(IVisitor visitor) {
visitor.Visit(this);
}
}
class ConcreteVisitor : IVisitor {
public void Visit(ElementA element) {
Console.WriteLine("Обработка ElementA");
}
public void Visit(ElementB element) {
Console.WriteLine("Обработка ElementB");
}
}
Тук могат да се добавят нови операции чрез създаване на нови класове посетители, без да се променят класовете на елементите.