Patrón Decorator

¿Qué es el Patrón Decorator?

El Decorator es un patrón de diseño estructural que permite añadir funcionalidades a un objeto de manera dinámica, sin alterar su clase. Es útil para extender el comportamiento de los objetos sin recurrir a la herencia.

Código de Ejemplo en JavaScript

            
class Coffee {
  cost() {
    return 5;
  }

  description() {
    return "Café";
  }
}

class MilkDecorator {
  constructor(coffee) {
    this.decoratedCoffee = coffee;
  }

  cost() {
    return this.decoratedCoffee.cost() + 2;
  }

  description() {
    return this.decoratedCoffee.description() + ", con leche";
  }
}

class SugarDecorator {
  constructor(coffee) {
    this.decoratedCoffee = coffee;
  }

  cost() {
    return this.decoratedCoffee.cost() + 1;
  }

  description() {
    return this.decoratedCoffee.description() + ", con azúcar";
  }
}

// Uso del Patrón Decorator
let coffee = new Coffee();
console.log(coffee.description() + " cuesta $" + coffee.cost());

coffee = new MilkDecorator(coffee);
console.log(coffee.description() + " cuesta $" + coffee.cost());

coffee = new SugarDecorator(coffee);
console.log(coffee.description() + " cuesta $" + coffee.cost());

        

Casos de Uso

  • Añadir funcionalidades a componentes gráficos como botones o ventanas.
  • Extender el comportamiento de objetos en tiempo de ejecución sin modificar su estructura.
  • Aplicar configuraciones adicionales a instancias existentes de clases.

Patrones Relacionados

  • Composite: Trabaja con jerarquías, mientras que Decorator añade funcionalidad.
  • Adapter: Convierte interfaces incompatibles, pero no añade funcionalidad.
  • Proxy: Controla el acceso al objeto, mientras que Decorator lo extiende.
Whatsapp Mentores Tech