Junior — Middle
Обяснете концепцията на патърна Decorator и какво е неговото предимство в дизайна на софтуерни системи.
sobes.tech AI
Отговор от AI
Моделът Decorator позволява динамично добавяне на нови отговорности към обекти, като ги обвива в други обекти-декоратори, които реализират същия интерфейс. Това е алтернатива на наследяването за разширяване на функционалността.
Предимства:
- Гъвкавост: декораторите могат да се комбинират в различен ред и количество.
- Избягва експлозивния растеж на класове чрез наследяване.
- Позволява добавяне на поведение по време на изпълнение.
Пример на 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
Тук MilkDecorator добавя цената на млякото към базовото кафе.