Junior — Middle
Puteți explica conceptul de pattern 'vizitator' și aplicarea sa în proiectarea programelor?
sobes.tech AI
Răspuns de la AI
Modelul «vizitator» (Visitor) permite separarea algoritmilor de obiectele pe care aceștia sunt executați. El definește o operație care se realizează asupra elementelor unei structuri de obiecte, permițând adăugarea de noi operații fără a modifica clasele elementelor.
Aplicații:
- Când este necesar să se execute diferite operații asupra obiectelor unei structuri complexe.
- Când se adaugă frecvent noi operații, dar structura obiectelor rămâne stabilă.
Exemplu în 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("Procesarea ElementA");
}
public void Visit(ElementB element) {
Console.WriteLine("Procesarea ElementB");
}
}
Aici, se pot adăuga noi operații creând noi clase de vizitatori, fără a modifica clasele elementelor.