Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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
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
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?
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)
EJEMPLO EN JAVA