Patron Visitor

Introduccion:

Representa una operacion sobre los elementos de una estructura de objetos. Permite definir una nueva operacion sin cambiar las clases de los elementos sobre los que opera.

Nombre del Patron:
Visitor (visitante).

Clasificacion del Patron:
Patron de Comportamiento.

Intencion:

Proporcionar una forma facil y sostenible de ejecutar acciones en una familia de clases. Este patron centraliza los comportamientos y permite que sean modificados o ampliados sin cambiar las clases sobre las que actuan.

Motivacion:

Un compilador representa los programas como árboles de sintaxis abstracta, sobre los que ejecuta operaciones.
Muchas operaciones necesitan diferenciar distintos tipos de nodo en el árbol (expresiones, variables, etc.).

Estructura:




Participantes:

Visitor: Define una operación de visita para cada clase de elemento concreto en la estructura de objetos.

ConcreteVisitor: Implementa la interfaz Visitor, Cada operación implementa un fragmento de la labor global del visitor concreto, pudiendo almacenar información local.

Element: Define una operación accept con un visitor como argumento.

ConcreteElement: Implementa la operación accept.

ObjectStructure: Gestiona la estructura de objetos, y puede enumerar sus elementos, Puede ser un compuesto (patrón composite) o una colección de objetos, Puede ofrecer una interfaz que permita al visitor visitar a sus elementos.

Consecuencias:

Facilita la definición de nuevas operaciones.

Agrupa operaciones relacionadas.

Añadir nuevas clases ConcreteElement es costoso.

Permite atravesar jerarquías de objetos que no están relacionados por un padre común.

El visitor puede acumular el estado de una operación al visitar la estructura de objetos, en vez de pasarlo como argumento o usar variables globales.

Rompe la encapsulación.

4 comentarios:

  1. Excelente trabajo el que haz hecho, me ha servido de mucho, que bueno que haya gente como tu que comparte lo que sabe, enhorabuena!

    ResponderEliminar
  2. aun no lo comprendo del todo pero muchas gracias información importante, y ordenada

    ResponderEliminar
  3. aun no lo comprendo del todo pero muchas gracias información importante, y ordenada

    ResponderEliminar

Hora Bogotá Colombia