Вопрос проверяет понимание структурных шаблонов проектирования, которые определяют отношения между классами и объектами для построения гибких и масштабируемых архитектур.
Структурные шаблоны проектирования (Structural Patterns) — это одна из трех основных категорий шаблонов, наряду с порождающими и поведенческими. Они фокусируются на том, как классы и объекты могут быть объединены для формирования более крупных структур, сохраняя при этом гибкость и эффективность. Основная цель — упростить проектирование системы, определяя типичные способы взаимодействия между компонентами.
class Coffee {
cost() { return 5; }
}
class MilkDecorator {
constructor(coffee) { this.coffee = coffee; }
cost() { return this.coffee.cost() + 2; }
}
class SugarDecorator {
constructor(coffee) { this.coffee = coffee; }
cost() { return this.coffee.cost() + 1; }
}
let myCoffee = new Coffee();
myCoffee = new MilkDecorator(myCoffee);
myCoffee = new SugarDecorator(myCoffee);
console.log(myCoffee.cost()); // 8В этом примере декораторы добавляют стоимость молока и сахара к базовому кофе, не изменяя класс Coffee.
Структурные шаблоны широко используются в разработке фреймворков, библиотек и крупных приложений. Например, Адаптер часто применяется при интеграции с внешними API, Декоратор — в системах логирования или кэширования, а Фасад — для упрощения работы с базами данных или сложными сервисами.
Вывод: Структурные шаблоны помогают создавать гибкие и поддерживаемые архитектуры, упрощая интеграцию и расширение функциональности. Их стоит применять, когда нужно организовать взаимодействие между компонентами без жесткой связанности.