Está en la página 1de 14

PATRONES DE DISEODECORADOR

PROFESOR: ING. RENE CRUZ GUERRERO ALUMNO: IVAN QUINTERO REYES

El patrn Decorator responde a la necesidad de aadir dinmicamente funcionalidad a un Objeto.Esto nos permite no tener que crear sucesivas clases que hereden de la primera incorporando la nuevafuncionalidad, sino otras que la implementan y se asocian a la primera. Es un patrn estructural

Su intencin es decorar las responsabilidades de un objetodinmica y transparentemente a sus clientes. Alternativa a laherencia para decorar la responsabilidad de un subconjuntode objetos

DECORATOR
1) Nombre y clasificacin: Decorator. Estructural

2) Otros nombres: Wrapper(Envoltorio)


3) Intencin: Decorar las responsabilidades de un objeto dinmica y transparentemente a sus clientes. Alternativa a la herencia para decorar la responsabilidad de un subconjunto de objetos 4) Motivacin:
Ejemplo explosin de herencia con extensiones repetidas: cafs con distintos condimentos

Necesidad de cambiar las extensiones en tiempo de ejecucin


Repeticin de cdigo Reutilizacin

5)

Aplicabilidad:
Aadir o eliminar funcionalidades a objetos de forma dinmica y transparente Ventana de login con barra de progreso

Evitar una explosin de subclases para poder tener todas las combinaciones de una serie de funcionalidades independientes
Streams en Java

7) Participantes
AbstractComponent: Supertipo de los objetos que pueden ser decorados ConcreteComponent: define un objeto susceptible de ser decorado

AbstractDecorator:
Decorator1 -DecoratorN: decora una o varias operaciones de un ConcreteComponent

8) Colaboraciones
El decorador redirige sus mensajes sobre un objeto de tipo AbstractComponent. Opcionalmente, puede invocar mtodos adicionales antes y despus de la redireccin (E) Compararlo con el PD Strategy

9) Consecuencias (ventajas e inconvenientes)


Mayor flexibilidad que la herencia, incluso puede decorarse un objeto varias veces con el mismo decorador, lo que sera imposible con la herencia
Cifrar doblemente un texto

Favorece la definicin de interfaces y clases bases ligeras. Slo se carga con las funcionalidades que se necesitan, no son necesarias megaclases que sean capaces de hacerlo todo
Cuidado: ha de respetarse la interfaz. P.e, se podra aadir la posibilidad de exportar el contenido del archivo asociado al Tracer?

Incremento de pequeos objetos. Ms difciles de entender y de depurar

10) Implementacin
AbstractDecoratorcuando slo existe un decorador? Mantener ligera AbstractComponent. Facilita la implementacin de los decoradores. La decoracin es recurrente y en general no es conmutativa El ConcreteComponent puede establecerse en el constructor del decorador o posteriormente mediante operaciones Get/SetDecorable

11)

13) Patrones relacionados:


Adapter. En el PD Adapterse cambia la interfaz del Adaptable, en el Decoratorse respeta la del AbstractComponent Strategy. En el PD Strategyse cambia las tripas de un objeto, el Decorator slo la piel. Adems es transparente para el componente

EJEMPLO EN JAVA

También podría gustarte