Visitor
Clasificación del patrón
De comportamiento
Intención
Permite incluir nuevos métodos a una clase sin tener que modificarla.
Aplicabilidad
Recomendado para:
- Estructuras jerárquicas (arboles).
- Muchas clases poco relacionadas entre sí.
- Estructura de objetos con diferentes interfaces y posibilidad de ampliación.
- Estructura con altas probabilidades de incluir de nuevos métodos.
- Compiladores, intérpretes.
No recomendado para:
- Sistemas con cambios constantes en estructura global.
- Estructuras poco jerárquicas.
Estructura
Participantes
Visitor. Declara una operación visitar para cada clase de operación ConcreteElement 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.
ConcreteElement. 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.
Colaboraciones
Implementación
Al implementar el patron Visitor debemos tenr en cuenta:
- El cliente crea una instancia de un ConcreteVisitor y lo utiliza para recorrer su estructura.
- Las clases visitadas por un mismo Visitor pueden no estar relacionadas entre sí a través de la herencia.
- El Visitor facilita añadir nuevas operaciones.
- Agrupa operaciones relacionas y separa las que no lo están.
- Añadir nuevas clases a la estructura resulta muy costoso.
Patrones relacionados
Composite.
Interpreter.
Referencias Bibliográficas
Design Patterns Elements of Reusable Object-Oriented Software, GoF.
http://kybele.escet.urjc.es/documentos/SI/Patrones/23_Visitor.ppt
http://dmi.uib.es/~yuhua/APOO07-08/Presentation/visitor.pdf
No hay comentarios:
Publicar un comentario