7/30/2019 Patrones de diseo-decorador
1/14
PATRONES DE DISE
DECORA
PROFESOR: ING. RENE CR
ALUMNO: IVAN QU
7/30/2019 Patrones de diseo-decorador
2/14
El patrn Decorator responde a la necesidad dedinmicamente funcionalidad a un Objeto.Esto nos pe
tener que crear sucesivas clases que hereden de la
incorporando la nuevafuncionalidad, sino otras
implementan y se asocian a la primera. Es un patrn estru
7/30/2019 Patrones de diseo-decorador
3/14
Su intencin es decorar las responsabilidades d
objetodinmica y transparentemente a sus clie
Alternativa a laherencia para decorar la responsab
de un subconjuntode objetos
7/30/2019 Patrones de diseo-decorador
4/14
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 de
responsabilidad de un subconjunto de objetos
4) Motivacin: Ejemplo explosin de herencia con extensiones repetidas: cafs con distint
Necesidad de cambiar las extensiones en tiempo de ejecucin
Repeticin de cdigo
Reutilizacin
7/30/2019 Patrones de diseo-decorador
5/14
5) Aplicabilidad:
Aadir o eliminar funcionalidades a objetos de forma dinm
transparente
Ventana de login con barra de progreso
Evitar una explosin de subclases para poder tener todas la
combinaciones de una serie de funcionalidades independie
Streams en Java
7/30/2019 Patrones de diseo-decorador
6/14
7/30/2019 Patrones de diseo-decorador
7/14
7) Participantes
AbstractComponent: Supertipo de los objetos que puededecorados
ConcreteComponent: define un objeto susceptible de ser
decorado
AbstractDecorator:
Decorator1 -DecoratorN: decora una o varias operaciones
ConcreteComponent
7/30/2019 Patrones de diseo-decorador
8/14
8) Colaboraciones
El decorador redirige sus mensajes sobre un objeto d
AbstractComponent. Opcionalmente, puede invocar m
adicionales antes y despus de la redireccin
(E) Compararlo con el PD Strategy
7/30/2019 Patrones de diseo-decorador
9/14
9) Consecuencias (ventajas e inconvenientes)
Mayor flexibilidad que la herencia, incluso puede decorarse un 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
funcionalidades que se necesitan, no son necesarias megaclas
capaces de hacerlo todo Cuidado: ha de respetarse la interfaz. P.e, se podra aadir la posibilidad
contenido del archivo asociado al Tracer?
Incremento de pequeos objetos. Ms difciles de entender y de de
7/30/2019 Patrones de diseo-decorador
10/14
10) Implementacin
AbstractDecoratorcuando slo existe un decorador?
Mantener ligera AbstractComponent. Facilita la impleme
los decoradores.
La decoracin es recurrente y en general no es conmutati
El ConcreteComponent puede establecerse en el cons
decorador o posteriormente mediante o
Get/SetDecorable
7/30/2019 Patrones de diseo-decorador
11/14
11)
7/30/2019 Patrones de diseo-decorador
12/14
7/30/2019 Patrones de diseo-decorador
13/14
13) Patrones relacionados:
Adapter. En el PD Adapterse cambia la inter
Adaptable, en el Decoratorse respeta l
AbstractComponent
Strategy. En el PD Strategyse cambia las tripas
objeto, el Decorator slo la piel. Adems es transppara el componente
7/30/2019 Patrones de diseo-decorador
14/14
EJEMPLO EN JAVA