Decorador
El patr贸n Decorador (Decorator) es un patr贸n de dise帽o estructural que permite a帽adir din谩micamente funcionalidades a objetos en tiempo de ejecuci贸n sin alterar la estructura de las clases existentes. Se utiliza para extender las funcionalidades de los objetos de una manera flexible y reutilizable, implementando cada funcionalidad en clases decoradoras separadas.
Concepto del Patr贸n Decorador
Imagina que tienes una clase base, por ejemplo, una bebida, y quieres a帽adir opciones como leche, az煤car, chocolate, etc., sin modificar la clase base ni crear subclases para cada combinaci贸n posible. El patr贸n decorador permite esto a帽adiendo estas funcionalidades en tiempo de ejecuci贸n.
Ejemplo en TypeScript
Vamos a crear un ejemplo simple que demuestra c贸mo funciona el patr贸n decorador. En este ejemplo, consideraremos una aplicaci贸n que simula una cafeter铆a con diferentes tipos de caf茅 y opciones adicionales como leche y az煤car.
Explicaci贸n
SimpleCoffee es la implementaci贸n b谩sica de la interfaz Coffee.
CoffeeDecorator es una clase abstracta que implementa la interfaz Coffee y mantiene una referencia a un objeto Coffee. Todos los decoradores concretos extender谩n esta clase.
WithMilk y WithSugar son decoradores concretos que a帽aden funcionalidades y costos adicionales al objeto Coffee.
Al final, demostramos c贸mo se puede envolver un caf茅 simple con m煤ltiples decoradores para agregar leche y az煤car, mostrando c贸mo el patr贸n Decorador permite a帽adir din谩micamente funcionalidades.
Este patr贸n es muy 煤til para respetar el principio de responsabilidad 煤nica y el principio de abierto/cerrado, permitiendo que las clases est茅n abiertas para la extensi贸n pero cerradas para la modificaci贸n.
Last updated