56c278cb44 | ||
---|---|---|
.. | ||
composite | ||
README.md | ||
scheme-1.png | ||
scheme-2.png |
README.md
Компоновщик
Структурный паттерн проектирования, который позволяет сгруппировать множество объектов в древовидную структуру, а затем работать с ней так, как будто это единичный объект.
Паттерн Компоновщик объединяет объекты в древовидные структуры для представления иерархий «часть/целое». Компоновщик позволяет клиенту выполнять однородные операции с отдельными объектами и их совокупностями.
Можно сказать, что паттерн Компоновщик нарушает принцип одной обязанности ради прозрачности. Что такое «прозрачность»? Благодаря тому, что были включены в интерфейс Component операции управления как дочерними узлами, так и листьями, клиент выполняет одинаковые операции с комбинациями и листовыми узлами. Таким образом, вид узла становится прозрачным для клиента. Однако при этом приходится частично жертвовать безопасностью, потому что клиент может попытаться выполнить с элементом неподходящую или бессмысленную операцию (например, попытаться добавить меню в листовой элемент). Речь идет о сознательном архитектурном решении.