Sobes.tech
Junior — Middle

Meg tudná magyarázni a 'látogató' mintázat fogalmát és alkalmazását a szoftvertervezésben?

sobes.tech MI

Válasz az MI-től

A «látogató» (Visitor) minta lehetővé teszi az algoritmusok elválasztását a rajtuk végrehajtott objektumoktól. Meghatározza azokat a műveleteket, amelyek egy objektumszerkezet elemein hajtódnak végre, lehetővé téve új műveletek hozzáadását anélkül, hogy módosítanánk az elemek osztályait.

Alkalmazások:

  • Amikor különböző műveleteket kell végrehajtani egy összetett szerkezetű objektumon.
  • Amikor gyakran adunk hozzá új műveleteket, de az objektumok szerkezete stabil marad.

C# példában:

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 feldolgozása");
    }
    public void Visit(ElementB element) {
        Console.WriteLine("ElementB feldolgozása");
    }
}

Itt új műveletek adhatók hozzá új látogatói osztályok létrehozásával, anélkül, hogy módosítanánk az elemek osztályait.