Está en la página 1de 8

VISITOR

Intencin
Representa una operacin para ser ejecutada sobre los elementos de una estructura de objetos. Visitor permite definir una nueva operacin sin cambiar las clases de los elementos sobre los cuales ste opera. Proporciona un marco genrico para soportar operaciones sobre un grupo de clases.

Intencin
Visitor Te puedo hacer una visita? Element

Si claro, te traes algo

Voy a llevarle donitas a mi amiga umm

Ejemplo

Ejemplo

Descripcin
Se extraen unas operaciones relacionadas de un grupo de clases y se sitan juntas en una nica clase.
Las clases sobre las que se realicen las operaciones deben soportar un mtodo de aceptacin (cuyo argumento es una instancia de Visitor), que es llamado cuando el visitor debe ejecutar una operacin sobre el Element. El mtodo de aceptacin llama al mtodo Visit en el Visitor Todas las implementacin de Visitor implementan el mtodo Visit especfico para el tipo de Element.

Visitor: Clase abstracta que define un mtodo visit para cada una de las clases ConcretElement

Estructura

ConcreteVisitor:
Representa un operacin especfica del sistema.

ConcreteElement : Element :

Clase abstracta que representa los objetos sobre los que actan visitor. Define un mtodo Accept() que recibe un
visitor como argumento.

Implementa el mtodo Accept , invocando el mtodo Visit apropiado definido en Visitor

Consideraciones
Utilice el patron visitor cuando:
- Un sistema contiene un grupo de clases relacionadas. - Tiene que realizar algunas operaciones no triviales sobre algunas o todas las clases relacionadas. - Las operaciones deben ejecutarse de forma diferente para las distintas clases. Alta flexibilidad para aadir operaciones.

Si se modifica las clases Element se debe reescribir el cdigo del visitor.Cualquier clase adicional hace necesario definir un nuevo mtodo en la interfaz Visitor y cada ConcreteVisitor tiene que proporcionar una implementacin para ese mtodo.

También podría gustarte