Sobes.tech
Junior — Middle

Môžete vysvetliť koncept vzoru 'návštevník' a jeho použitie v návrhu programov?

sobes.tech AI

Odpoveď od AI

Vzor «návštevník» (Visitor) umožňuje oddeliť algoritmy od objektov, na ktorých sú vykonávané. Definuje operáciu, ktorá sa vykonáva na prvkoch štruktúry objektov, čo umožňuje pridávať nové operácie bez zmeny samotných tried prvkov.

Použitie:

  • Keď je potrebné vykonávať rôzne operácie na objektoch zložitej štruktúry.
  • Keď sa často pridávajú nové operácie, ale štruktúra objektov zostáva stabilná.

Príklad v 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("Spracovanie ElementA");
    }
    public void Visit(ElementB element) {
        Console.WriteLine("Spracovanie ElementB");
    }
}

Tu je možné pridávať nové operácie vytváraním nových tried návštevníkov, bez zmeny tried prvkov.