0% encontró este documento útil (0 votos)
125 vistas2 páginas

Patrón Decorator

El patrón Decorator permite extender dinámicamente la funcionalidad de un objeto mediante la adición de responsabilidades sin necesidad de crear subclases. Los decoradores envuelven el objeto componente original y agregan nuevas capacidades, permitiendo personalizar objetos de manera flexible en tiempo de ejecución.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
125 vistas2 páginas

Patrón Decorator

El patrón Decorator permite extender dinámicamente la funcionalidad de un objeto mediante la adición de responsabilidades sin necesidad de crear subclases. Los decoradores envuelven el objeto componente original y agregan nuevas capacidades, permitiendo personalizar objetos de manera flexible en tiempo de ejecución.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 2

PATRÓN 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.

INTENCIÓN
Extender la funcionalidad de un objeto en forma dinámica, proporcionando una alternativa
flexible a la creación de subclases.

TAMBIÉN CONOCIDO COMO


Wrapper(Envoltorio).

APLICABILIDAD
 Se utiliza este patrón cuando se necesita añadir responsabilidades a objetos individuales
dinámica y transparente, es decir, sin afectar a otros objetos.
 Se necesita retirar responsabilidades de algunos objetos.
 La extensión por subclases es poco práctica. Por ejemplo, un gran número de
extensiones independientes son posibles y produciría una explosión de subclases por
cada combinación. También cuando la definición de clase puede estar oculta o no
disponible para subclases.

ESTRUCTURA
PARTICIPANTES
 Component: define una interfaz para los objetos a extender en forma dinámica.
 ConcreteComponent: define un objeto al cual se le puede extender con
responsabilidades adicionales.
 Decorator: mantiene una referencia a un objeto componente y define una interfaz que
se ajusta a la interfaz de componente.
 ConcreteDecorator: agrega responsabilidades al componente.

COLABORACIONES
ConcreteDecorator-Component: el primero reenvía solicitudes a su objeto Component.
Opcionalmente puede realizar operaciones adicionales antes y después de remitir la solicitud.

IMPLEMENTACIÓN
La interfaz de un objeto decorador debe ajustarse a la interfaz del componente que decora (por
herencia). Omitiendo la clase Decorador abstracta. No hay necesidad de definir una clase
Decorador abstracta cuando sólo tiene que añadir una responsabilidad.

VENTAJAS
 Mayor flexibilidad que la herencia estática. Con decoradores, las responsabilidades se
pueden agregar y quitar en tiempo de ejecución con sólo conectar y desconectar ellos.
Por el contrario, la herencia requiere la creación de una nueva clase para cada
responsabilidad adicional.
 Evita las clases cargadas de características, ya que permite la adición de
responsabilidades. En lugar de tratar de soportar todas las características previsibles de
una clase compleja y personalizable, se puede definir una clase simple y agregar
funcionalidad incremental con objetos.
 Son fáciles de personalizar por aquellos que entienden su estructura.

DESVENTAJAS
 Un decorador y su componente no son idénticos. Un decorador actúa como una caja
transparente, pero desde el punto de vista de la identidad del objeto, un componente
decorado no es idéntico a la del propio componente.
 Un diseño que utiliza Decorator a menudo resulta en sistemas compuestos por gran
cantidad de pequeños objetos parecidos.
 Los objetos sólo se diferencian en la manera en que están interconectados. Esto puede
resultar difícil de aprender y depurar.

También podría gustarte