Junior — Middle
Vysvetlite koncept vzoru Decorator a akú výhodu má v návrhu softvérových systémov.
sobes.tech AI
Odpoveď od AI
Vzor Decorator umožňuje dynamicky pridávať novú zodpovednosť objektom tým, že ich obalí do iných dekorátorov, ktoré implementujú ten istý rozhranie. Je to alternatíva k dedičstvu na rozšírenie funkčnosti.
Výhody:
- Flexibilita: dekorátory je možné kombinovať v rôznych poradí a množstvách.
- Vyhýba sa explozívnemu rastu tried kvôli dedičstvu.
- Umožňuje pridávať správanie počas behu.
Príklad v JavaScripte (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
Tu MilkDecorator pridáva cenu mlieka k základnej káve.