Sobes.tech
Junior — Middle

¿Puede explicar la concepto del patrón 'visitante' y su aplicación en el diseño de programas?

sobes.tech AI

Respuesta de la IA

El patrón «visitante» (Visitor) permite separar los algoritmos de los objetos sobre los que se ejecutan. Define una operación que se realiza sobre los elementos de una estructura de objetos, permitiendo agregar nuevas operaciones sin modificar las clases de los elementos.

Aplicaciones:

  • Cuando se necesitan realizar diferentes operaciones sobre objetos de una estructura compleja.
  • Cuando se añaden nuevas operaciones con frecuencia, pero la estructura de los objetos permanece estable.

Ejemplo en 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("Procesando ElementA");
    }
    public void Visit(ElementB element) {
        Console.WriteLine("Procesando ElementB");
    }
}

Aquí, se pueden agregar nuevas operaciones creando nuevas clases de visitantes, sin cambiar las clases de los elementos.