Sobes.tech
Junior — Middle

Explique o conceito do padrão Decorador e qual é a sua vantagem no design de sistemas de software.

sobes.tech IA

Resposta da IA

O padrão Decorator permite adicionar dinamicamente novas responsabilidades aos objetos, envolvendo-os em outros objetos decoradores que implementam a mesma interface. É uma alternativa à herança para expandir a funcionalidade.

Vantagens:

  • Flexibilidade: pode-se combinar decoradores em diferentes ordens e quantidades.
  • Evita o crescimento explosivo de classes por herança.
  • Permite adicionar comportamento em tempo de execução.

Exemplo em JavaScript (Node.js):

class Coffee {
  cost() { return 5; }
}

class MilkDecorator {
  constructor(coffee) { this.coffee = coffee; }
  cost() { return this.coffee.cost() + 2; }
}

const simpleCoffee = new Coffee();
const milkCoffee = new MilkDecorator(simpleCoffee);
console.log(milkCoffee.cost()); // 7

Aqui, MilkDecorator adiciona o custo do leite ao café base.