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.