Sobes.tech
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 добавя цената на млякото към базовото кафе.