Visitor

Patrón de diseño de comportamiento

El patrón de diseño Visitor se utiliza para separar la lógica u operaciones que se pueden realizar sobre una estructura compleja. En ocasiones nos podemos encontrar con estructuras de datos que requieren realizar operaciones sobre ella, pero estas operaciones pueden ser muy variadas e incluso se pueden desarrollar nuevas a medida que la aplicación crece.

A medida que estas operaciones crecen, el número de operaciones que deberá tener la estructura también crecerá haciendo que administrar la estructura sea muy complejo. Por esta razón el patrón de diseño Visitor propone la separación de estas operaciones en clases independientes llamadas Visitantes, las cuales son creadas implementando una interface común y no requiere modificar la estructura inicial para agregar la operación.

Estructura del patrón Visitor
Estructura del patrón Visitor.

A continuación se explican los componentes que conforman el patrón.

  • Cliente: Componente que interactúa con la estructura (element) y con el Visitante, éste es responsable de crear los visitantes y enviarlos al elemento para su procesamiento.
  • Element: Representa la raíz de la estructura, en forma de árbol, sobre la que utilizaremos el Visitante. Este objeto por lo general es una interface que define el método accept y deberán implementar todos los objetos de la estructura.
  • ConcreteElement: Representa un hijo de la estructura compuesta, la estructura completa puede estar compuesta de un gran número de estos objetos y cada uno deberá implementar el método accept.
  • IVisitor: Interface que define la estructura del visitante, la interface deberá tener un método por cada objeto que se requiera analizar de la estructura (element).
  • ConcreteVisitor: Representa una implementación del visitante, esta implementación puede realizar una operación sobre el element. Es posible tener todos los ConcreteVisitor necesarios para realizar las operaciones que necesitemos.
Diagrama de secuencia del patrón Visitor
Diagrama de secuencia del patrón Visitor.
  1. El cliente crea la estructura (Element).
  2. El cliente crea la instancia del Visitante a utilizar sobre la estructura.
  3. El cliente ejecuta el método accept de la estructura y la envía al Visitante.
  4. El Element le dice al Visitante con que método lo debe procesar. El Visitante deberá tener un método para cada tipo de clase de la estructura.
  5. El Visitante analiza al Element mediante su método visitElement y repite el proceso de ejecutar el método accept sobre los hijos del Element. Nuevamente el Visitante deberá tener un método para procesar cada clase hija de la estructura.
  6. El ConcreteElementA le indica al Visitante con qué método debe procesarlo, el cual es visitElementA.
  7. La visitante continúa con los demás hijos de Element y esta vez ejecuta el método accept sobre el ConcreteElementB.
  8. El ConcrteElementB le indica al Visitante con qué método debe procesarlo, el cual es visitElementB.
  9. Finalmente el Visitante termina la operación sobre la estructura cuando ha recorrido todos los objetos, obteniendo un resultado que es solicitado por el cliente mediante el método getResults (el resultado es opcional ya que existen operaciones que no arrojan resultados).

Ejemplo del mundo real

Mediante la implementación del patrón de diseño Visitor veremos cómo es que el plan de construcción de un proyecto tipo Microsoft Project es analizado y evaluado para arrojar los datos que requerimos de él, para esto, construiremos un plan de trabajo conformado por actividades y personal, forma una estructura jerárquica en forma de árbol.

Descubre como el patrón Visitor nos ayuda a resolver este problema
Descubre como el patrón Visitor nos ayuda a resolver este problema.

¿Sabes la importancia de los patrones de diseño?

Los patrones de diseño son la clave para crecer profesionalmente hacia la arquitectura de software, sin mencionar que los salarios son los más altos de la industria de IT, descúbrelo en este video.

🎉 Este video es parte del curso de patrones de diseño, inscríbete aquí 🎉

Acerca de este libro

Introducción a los patrones de diseño

Todo lo que acabas de ver en este artículo es solo una pequeña parte del libro Introducción a los patrones de diseño, el libro más completo de patrones de diseño en español, abarcamos 25 patrones de diseño junto con 25 proyectos del mundo real. Olvídate de aprender patrones de diseño con los ejemplos típicos de Internet de cómo hacer una pizza, animales y figuras geométricas. te invito a que veas mi libro:

Ver libro
Todos los derechos reservados ©
Reactive programming
LinkedinYoutubeTwitterFacebook

© 2021, Copyright - Oscar Blancarte. All rights reserved.