Visitor (patrón de diseño)
De Wikipedia, la enciclopedia libre
En programación orientada a objetos, el patrón visitor es una forma de separar el algoritmo de la estructura de un objeto.
La idea básica es que se tiene un conjunto de clases elemento que conforman la estructura de un objeto. Cada una de estas clases elemento tiene un método aceptar (accept()) que recibe al objeto visitador (visitor) como argumento. El visitador es una interfaz que tiene un método visitor diferente para cada clase elemento; por tanto habrá implementaciones de la interfaz visitor de la forma: visitorClase1, visitorClase2... visitorClaseN. El método accept de una clase elemento llama al método visit de su clase. Clases concretas de un visitador pueden entonces ser escritas para hacer una operación en particular.
Cada método visit de un visitador concreto puede ser pensado como un método que no es de una sola clase, sino de un par de clases: el visitador concreto y clase elemento particular. Así el patrón visitor simula el envío doble (en inglés éste término se conoce como Double-Dispatch) en un lenguaje convencional orientado a objetos de envío único (Single-Dispatch), como son Java o C++).
El patrón visitor también especifica cómo sucede la interacción en la estructura del objeto. En su versión más sencilla, donde cada algoritmo necesita iterar de la misma forma, el método accept de un elemento contenedor, además de una llamada al método visitor, también pasa el objeto visitor al método accept de todos sus elementos hijos.
Este patrón es ampliamente utilizado en intérpretes, compiladores y procesadores de lenguajes, en general.
Patrones de Diseño |
---|
Creacionales: Abstract Factory | Builder | Factory Method | Prototype | Singleton | Secreton |
Estructurales: Adapter | Bridge | Composite | Decorator | Facade | Flyweight | Proxy |
De Comportamiento: Chain of Responsibility | Command | Interpreter | Iterator | Mediator | Memento | Observer | State | Strategy | Template Method | Visitor |