Patrón Visitor
¿Qué es el Patrón Visitor?
El Visitor es un patrón de diseño de comportamiento que permite agregar nuevas operaciones a una estructura de objetos sin modificar las clases de los elementos sobre los cuales opera. Esto es útil cuando deseas extender la funcionalidad de un grupo de clases relacionadas.
Código de Ejemplo en JavaScript
class ElementA { accept(visitor) { visitor.visitElementA(this); } operationA() { return "Operación específica de ElementA"; } } class ElementB { accept(visitor) { visitor.visitElementB(this); } operationB() { return "Operación específica de ElementB"; } } class Visitor { visitElementA(element) { console.log(`Visitor trabajando con: ${element.operationA()}`); } visitElementB(element) { console.log(`Visitor trabajando con: ${element.operationB()}`); } } // Uso del Patrón Visitor const elements = [new ElementA(), new ElementB()]; const visitor = new Visitor(); elements.forEach(element => element.accept(visitor));
Casos de Uso
- Agregar nuevas operaciones a un grupo de clases relacionadas sin modificar su código.
- Realizar cálculos o acciones específicas en estructuras complejas, como árboles o gráficos.
- Facilitar la extensión de funcionalidad sin romper el Principio de Abierto/Cerrado (Open/Closed Principle).
Patrones Relacionados
- Composite: Trabaja bien con estructuras de árbol, donde Visitor puede operar.
- Strategy: Define algoritmos intercambiables, mientras que Visitor aplica operaciones sobre clases existentes.
- Command: Encapsula solicitudes, mientras que Visitor extiende operaciones en objetos.