Adapter Bridge Decorator PATRONES DE DISEO ADAPTER El
Adapter, Bridge, Decorator. PATRONES DE DISEÑO
ADAPTER � El patrón adapter convierte la interfaz de una clase en la interfaz que el cliente espera. � El adapter permite que clases con interfaces incompatibles puedan trabajar juntas. � Este patrón se denomina también wrapper.
EJEMPLO:
APLICACIÓN: � Se desea utilizar un clase ya existente pero cuya interfaz no coincide con la que se necesita. � Se desea crear una clase que colabora con otras clases que no tienen interfaces compatibles. � Se desea adaptar varias subclases ya existentes adaptando la interfaz de su clase padre común (object adapter).
ESTRUCTURA - CLASS ADAPTER
ESTRUCTURA - OBJECT ADAPTER
PARTICIPANTES � Target: Define la interfaz especifica del dominio en el que se quiere hacer uso de la clase que se adapta. � Client: Utiliza objetos que implementan la interfaz definida por el target. � Adaptee: Presenta su interfaz original, que es la que se tiene que adaptar. � Adapter: Adapta la interfaz del objeto adaptado a la definida por el target.
BRIGE � El patrón Bridge, también conocido como Handle/Body, es una técnica usada en programación para desacoplar una abstracción de su implementación, de manera que ambas puedan ser modificadas independientemente sin necesidad de alterar por ello la otra. � Esto es, se desacopla una abstracción de su implementación para que puedan variar independientemente.
SE USA EL PATRÓN BRIDGE CUANDO: � Se desea evitar un enlace permanente entre la abstracción y su implementación. Esto puede ser debido a que la implementación debe ser seleccionada o cambiada en tiempo de ejecución. � Se desea compartir una implementación entre múltiples objetos (quizá usando contadores), y este hecho debe ser escondido a los clientes.
ESTRUCTURA:
PARTICIPANTES: Abstraction : define una interface abstracta. Mantiene una referencia a un objeto de tipo Implementor. � Refined. Abstraction : extiende la interface definida por Abstraction � Implementor : define la interface para la implementación de clases. Esta interface no se tiene que corresponder exactamente con la interface de Abstraction; de hecho, las dos interfaces pueden ser bastante diferente. � Concrete. Implementor : implementa la interface de Implementor y define su implementación concreta. �
COLABORACIONES: � Abstraction: emite los pedidos de los clientes a su objeto Implementor.
DECORATOR � El patrón Decorator responde a la necesidad de añadir dinámicamente funcionalidad a un Objeto. Esto nos permite no tener que crear sucesivas clases que hereden de la primera incorporando la nueva funcionalidad, sino otras que la implementan y se asocian a la primera.
ESTRUCTURA:
APLICABILIDAD Añadir objetos individuales de forma dinámica y transparente. � Responsabilidades de un objeto pueden ser retiradas. � Cuando la extensión mediante la herencia no es viable � Hay una necesidad de extender la funcionalidad de una clase, pero no hay razones para extenderlo a través de la herencia. � Hay la necesidad de extender dinámicamente la funcionalidad de un objeto y quizás quitar la funcionalidad extendida. �
- Slides: 15