Representa una operación que será realizada sobre los elementos de una estructura de objetos. Visitor permite definir nuevas operaciones sin cambiar las clases de los elementos sobre las que se realiza.
Estructura

Visitor: Declara una operación visitar para cada clase de operación ElementoConcreto de la estructura de objetos.
ConcreteVisitor: Implementa cada operación declarada por Visitor.
Element: Define una operación que le permite aceptar la visita de un Visitor.
ConcretElement: Implementa la operación Aceptar que se limita a invocar su correspondiente método del Visitor.
ObjectStructure: Puede enumerar sus elementos y puede proporcionar una interfaz de alto nivel para permitir al Visitor visitar sus elementos.
Consecuencias
- Facilita la definición de nuevas operaciones.
- Basta con definir una nueva especialización de la correspondiente clase abstracta Visitor.
- Las operaciones relacionadas están en el mismo módulo.
- Esto puede simplificar la realización de los algoritmos y permite que si los algoritmos comparten algunas estructuras de datos, éstas se puedan encapsular en el correspondiente visitor.
- Se dificulta la definición de nuevos tipos de datos sobre los que han de actuar las operaciones.
- Cada nuevo tipo de datos significa la definición de un método en Visitor y otro en cada uno de los ConcreteVisitor.
No hay comentarios:
Publicar un comentario