Sobes.tech
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.