Sobes.tech
Junior — Middle

Czy możesz wyjaśnić koncepcję wzorca 'odwiedzający' i jego zastosowanie w projektowaniu programów?

sobes.tech AI

Odpowiedź od AI

Wzorzec «odwiedzający» (Visitor) pozwala oddzielić algorytmy od obiektów, na których są wykonywane. Określa operację wykonywaną na elementach struktury obiektów, umożliwiając dodawanie nowych operacji bez zmiany samych klas elementów.

Zastosowania:

  • Gdy konieczne jest wykonywanie różnych operacji na obiektach złożonej struktury.
  • Gdy często dodaje się nowe operacje, ale struktura obiektów pozostaje stabilna.

Przykład w 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("Przetwarzanie ElementA");
    }
    public void Visit(ElementB element) {
        Console.WriteLine("Przetwarzanie ElementB");
    }
}

Tutaj można dodawać nowe operacje, tworząc nowe klasy odwiedzających, bez zmiany klas elementów.