viernes, 29 de mayo de 2009
Visitor

Permite incluir nuevos métodos a una clase sin tener que modificarla. Es muy utilizado en compiladores, intérpretes y analizadores de código.

Características generales de este patrón:

Nombre:

Visitor.

Propósito:

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.

Aplicabilidad:

Este patrón se utiliza generalmente cuando:

· 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.

Estructura:

Participantes:

· Visitor: Declara una operación visitar para cada clase de operación ConcretreElement 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.

· Las operaciones relacionadas están en el mismo módulo.

· 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

Patrones relacionados:

· Interprete.

· Iterator.

· Composite.

Etiquetas: , ,

 
posted by Camilo Mojica at 21:59 | Permalink |


0 Comments: