Introducción a los patrones de comportamiento
Presentación
El diseñador de un sistema orientado a objetos se enfrenta a menudo al problema del descubrimiento de objetos. Esto puede realizarse a partir de los dos aspectos siguientes:
-
La estructuración de los datos.
-
La distribución de los procesamientos y de los algoritmos.
Los patrones de estructuración aportan soluciones a los problemas de estructuración de datos y de objetos.
El objetivo de los patrones de comportamiento consiste en proporcionar soluciones para distribuir el procesamiento y los algoritmos entre los objetos.
Estos patrones organizan los objetos así como sus interacciones especificando los flujos de control y de procesamiento en el seno de un sistema de objetos.
Distribución por herencia o por delegación
Un primer enfoque para distribuir un procesamiento consiste en repartirlo en subclases. Este reparto se realiza mediante el uso en la clase de métodos abstractos que se implementan en las subclases. Como una clase puede poseer varias subclases, este enfoque habilita la posibilidad de obtener variantes en las partes descritas en las subclases. Esto se lleva a cabo mediante el patrón Template Method tal y como ilustra la figura 4-1.1.
Figura 4-1.1 - Reparto de procesamiento mediante herencia ilustrado por el patrón Template Method
Una segunda posibilidad de reparto se lleva a cabo mediante la distribución de procesamiento en los objetos cuyas clases son independientes. En este enfoque, un conjunto de objetos que cooperan entre ellos concurren a la realización de un procesamiento o de un algoritmo. El patrón Strategy ilustra este mecanismo en la figura 4-1.2. El método solicita de la clase Entidad invoca para realizar su procesamiento al método calcula especificado mediante la interfaz Estrategia. Cabe observar que esta última puede tener varias implementaciones.
Figura 4-1.2 - Distribución de un procesamiento entre distintos objetos ilustrado por el patrón Strategy
La tabla siguiente indica, para cada patrón de comportamiento, el tipo de reparto utilizado.
Chain of Responsibility |
Delegación |
Command |
Delegación |
Interpreter... |