Junior — Middle
Vysvětlete koncept vzoru Decorátor a jakou výhodu má v návrhu softwarových systémů.
sobes.tech AI
Odpověď od AI
Vzor Decorator umožňuje dynamicky přidávat objektem nové odpovědnosti tím, že je obaluje do jiných dekorátorových objektů, které implementují stejné rozhraní. Je to alternativa k dědičnosti pro rozšíření funkčnosti.
Výhody:
- Flexibilita: dekorátory lze kombinovat v různých pořadích a množstvích.
- Vyhýbá se explozivnímu růstu tříd kvůli dědičnosti.
- Umožňuje přidávat chování za běhu.
Příklad v JavaScriptu (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
Zde MilkDecorator přidává cenu mléka k základní kávě.