Junior — Middle
Wyjaśnij koncepcję wzorca Dekorator i jakie są jego zalety w projektowaniu systemów programistycznych.
sobes.tech AI
Odpowiedź od AI
Wzorzec Decorator pozwala na dynamiczne dodawanie nowych obowiązków obiektom, opakowując je w inne obiekty-dekoratory, które implementują ten sam interfejs. Jest to alternatywa dla dziedziczenia w celu rozszerzenia funkcjonalności.
Zalety:
- Elastyczność: dekoratory można łączyć w różnej kolejności i ilości.
- Unika eksplozji klas spowodowanej dziedziczeniem.
- Pozwala na dodanie zachowania w czasie działania.
Przykład w JavaScript (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
Tutaj MilkDecorator dodaje koszt mleka do podstawowej kawy.