Visitor
Última actualización
¿Te fue útil?
Última actualización
¿Te fue útil?
Según el libro "Patrones de Diseño" el patrón Visitor "representa una operación sobre los elementos de una estructura de objetos. Permite definir una nueva operación sin cambiar las clases de los elementos sobre los que opera".
Visitante:
declara una operación visitar para cada tipo de dato de operación de ElementoConcreto de la estructura de variables. El nombre y signatura de la operación identifican al tipo de dato que envía la petición visitar al visitante. Eso permite al visitante determinar el tipo de dato concreto de elemento que está siendo visitada. A continuación el visitante puede acceder al elemento directamente a través de su interfaz particular.
VisitanteConcreto:
implementa cada operación declarada por Visitante. Casa operación implementa un fragmento del algoritmo definido para el tipo de dato correspondiente de la colección. Visitanteconcreto proporciona el contexto para el algoritmo y guarda su estado local. Muchas veces este estado acumula resultados durante el recorrido de la estructura.
Elemento:
define una operación aceptar que toma un visitante como argumento.
ElementoConcreto:
implementa una operación aceptar que toma un visitante como argumento.
EstructuradDeObjeto:
puede enumerar sus elementos.
puede proporcionar una interfaz de alto nivel para permitir al visitante visitar a sus elementos.
No se observan impedimentos y/o modificaciones de la estructura original del patrón para su implementación en Go.
Se omite del código de ejemplo EstructuraDeObjeto dado que solo sería una colección que acepta elementos.
En este ejemplo queremos recrear un juego de rol en donde algunos personajes tengan superpoderes y otros armas de batalla.
Implementación:
Se puede probar la implementación del patrón de la siguiente forma:
puede ser un o una colección, como una lista o un conjunto.
Dado que Go no soporta sobrecarga de método, y a fin de facilitar el ejemplo sin hacer uso de la , los visitantes dispondan de diferentes comportamientos para cada tipo de elemento variando los nombres de sus funciones.
|
Atención: Esta publicación se encuentra abandonada. Puede acceder a la versión vigente en