El patrón de diseño Decorator es un objeto para tener la misma forma que el objeto principal. Esto permite que un objeto 'cliente' interactúe con el Decorator exactamente de la misma manera que lo haría con el objeto principal. El objeto Decorator contiene una referencia al objeto real.
El patrón de diseño Decorator se utiliza para extender la funcionalidad de un objeto dinámicamente sin tener que cambiar la clase original o utilizando herencia.
Una compañía de pizza necesita un programa que le permita al usuario agregar más ingredientes a una pizza. Nuestro trabajo es agregar dichos ingredientes y el precio adicional que tendrá la pizza.
Esto es algo como agregar una responsabilidad más a nuestro objeto de pizza en tiempo de ejecución y el patrón de diseño Decorator es adecuado para este tipo de requisitos.