Sobes.tech
Junior — Middle

Môžete vysvetliť, čo predstavuje vzor dekoratéra a aký je jeho hlavný zmysel?

sobes.tech AI

Odpoveď od AI

Vzor «Dekorátor» umožňuje dynamicky pridávať objektom nové zodpovednosti tým, že ich obalí do iných dekorátorových objektov bez zmeny pôvodnej triedy.

Hlavná myšlienka je vytvoriť obal okolo objektu, ktorý implementuje rovnaké rozhranie a môže vykonávať dodatočnú logiku pred alebo po volaní metód pôvodného objektu.

To je užitočné, keď je potrebné rozšíriť funkcionalitu bez dedičstva a zmeny existujúceho kódu.

Príklad v pseudokóde:

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žitie:
Coffee coffee = new MilkDecorator(new SimpleCoffee());
System.out.println(coffee.cost()); // 7

Týmto spôsobom dekorátor umožňuje flexibilne pridávať funkcionalitu objektom počas behu.