Junior — Middle
Pode explicar o que é o padrão decorador e qual é o seu significado principal?
sobes.tech IA
Resposta da IA
O padrão «Decorador» permite adicionar dinamicamente novas responsabilidades aos objetos, envolvendo-os em outros objetos decoradores sem alterar a classe original.
A ideia principal é criar uma camada em torno do objeto que implemente a mesma interface e possa executar lógica adicional antes ou depois de chamar os métodos do objeto original.
Isto é útil quando se deseja expandir a funcionalidade sem herdar ou modificar o código existente.
Exemplo em pseudocódigo:
interface Coffee {
double cost();
}
class SimpleCoffee implements Coffee {
public double cost() { return 5; }
}
class MilkDecorator implements Coffee {
private Coffee coffee;
public MilkDecorator(Coffee coffee) { this.coffee = coffee; }
public double cost() { return coffee.cost() + 2; }
}
// Uso:
Coffee coffee = new MilkDecorator(new SimpleCoffee());
System.out.println(coffee.cost()); // 7
Dessa forma, o decorador permite adicionar funcionalidades aos objetos de forma flexível em tempo de execução.