Patrón de diseño: Decorator - tectijuana/javapdd16a-Archived GitHub Wiki
Propósito
Asigna responsabilidades adicionales a un objeto dinámicamente, proporcionando una alternativa flexible a la herencia para extender la funcionalidad.
Motivación
Cuando es necesario añadir responsabilidades a objetos individuales en vez de a toda una clase. Un modo de añadir responsabilidades es a través de la herencia pero ya que está no es muy flexible al momento de controlar el cómo y cuándo decorar un objeto único. En vez de eso se utiliza un decorador que encierra al objeto y este es el encargado de delegar las operaciones; esto se puede hacer indefinidamente, así agregando más y más responsabilidades.
Aplicación
Se usa el patrón decorador cuando:
- Se quiere añadir objetos individuales de forma dinámica y transparente.
- Se quiere tener responsabilidades que pueden ser retiradas.
- La herencia no es viable.
Estructura
Participantes
- Componente
- Componente concreto
- Decorador
- Decorador concreto
App de Heroku
Referencias
Gamma, Erich. Design patterns: elements of reusable object-oriented software. Pearson Education India, 1995.
Freeman, Eric, et al. Head first design patterns. " O'Reilly Media, Inc.", 2004.