Junior — Middle
Ar galite paaiškinti 'lankytojo' šablono koncepciją ir jos taikymą programų projektavime?
sobes.tech AI
Atsakymas iš AI
„Lankytojo“ (Visitor) modelis leidžia atskirti algoritmus nuo objektų, kuriuose jie vykdomi. Jis apibrėžia operaciją, kuri vykdoma objekto struktūros elementuose, leidžiant pridėti naujas operacijas nesikeičiant pačių elementų klasių.
Pritaikymas:
- Kai reikia vykdyti skirtingas operacijas sudėtingos struktūros objektuose.
- Kai dažnai pridedamos naujos operacijos, bet objektų struktūra lieka stabili.
Pavyzdys 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("ElementA apdorojimas");
}
public void Visit(ElementB element) {
Console.WriteLine("ElementB apdorojimas");
}
}
Čia naujas operacijas galima pridėti kurdami naujus lankytojų klases, nekeisdami elementų klasių.