Saltar al contenido
uencoder

Decorator Pattern

El patrón decorador añade responsabilidades a un objeto dinámicamente sin cambiar su clase, apilando comportamiento mediante una cadena de wrappers como alternativa a la extensión por herencia.

Propósito

Superponer funcionalidad dinámicamente en tiempo de ejecución, extendiendo objetos con más flexibilidad que la herencia.

Mecanismo

Un decorador implementa la misma interfaz que el objetivo, mantiene una referencia a él y añade comportamiento antes/después de delegar las llamadas. Varios decoradores forman una cadena de envoltura. La familia InputStream de Java y el @decorator de Python son ejemplos típicos.

Casos de uso

  • Superposición de funcionalidades
  • Decoración de flujos de E/S
  • Preocupaciones transversales

Términos relacionados

References