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