Sobes.tech
Назад к вопросам
Junior — Middle
86

Объясните концепцию паттерна Decorator и в чем его преимущество в дизайне программных систем.

Ответ от нейросети

sobes.tech 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 добавляет стоимость молока к базовому кофе.