Sobes.tech
Junior — Middle

Можете ли објаснити концепт патерна 'посетилац' и његову примену у пројектовању програма?

sobes.tech АИ

Одговор од АИ

Шемат «посетилац» (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");
    }
}

Овде се могу додавати нове операције кроз креирање нових класа посетиоца, без измене класа елемената.