Sobes.tech
Junior — Middle

Můžete vysvětlit, co je to vzor dekorátor a jaký je jeho hlavní smysl?

sobes.tech AI

Odpověď od AI

Vzor «Dekorátor» umožňuje dynamicky přidávat objektům nové odpovědnosti tím, že je obaluje do jiných dekorátorových objektů, aniž by měnil původní třídu.

Hlavní myšlenkou je vytvořit obal kolem objektu, který implementuje stejnou rozhraní a může vykonávat dodatečnou logiku před nebo po volání metod původního objektu.

To je užitečné, když je třeba rozšířit funkčnost bez dědění a změny stávajícího kódu.

Příklad v pseudokódu:

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; }
}

// Použití:
Coffee coffee = new MilkDecorator(new SimpleCoffee());
System.out.println(coffee.cost()); // 7

Tímto způsobem dekorátor umožňuje flexibilně přidávat funkcionalitu objektům za běhu.