Sobes.tech
Junior — Middle

Můžete vysvětlit koncept vzoru 'návštěvník' a jeho použití při navrhování programů?

sobes.tech AI

Odpověď od AI

Vzor «návštěvník» (Visitor) umožňuje oddělit algoritmy od objektů, na kterých jsou prováděny. Definuje operaci, která se provádí na prvcích struktury objektů, což umožňuje přidávat nové operace bez změny tříd prvků.

Použití:

  • Když je třeba provádět různé operace na objektech složité struktury.
  • Když jsou často přidávány nové operace, ale struktura objektů zůstává stabilní.

Pří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("Zpracování ElementA");
    }
    public void Visit(ElementB element) {
        Console.WriteLine("Zpracování ElementB");
    }
}

Zde je možné přidávat nové operace vytvářením nových tříd návštěvníků, aniž by bylo nutné měnit třídy prvků.