patterns/composite/README.md

14 lines
1.9 KiB
Markdown
Raw Normal View History

2022-12-05 07:38:19 +00:00
# Компоновщик
Структурный паттерн проектирования, который позволяет сгруппировать множество объектов в древовидную структуру, а затем работать с ней так, как будто это единичный объект.
Паттерн **Компоновщик** объединяет объекты в древовидные структуры для представления иерархий «часть/целое». Компоновщик позво­ляет клиенту выполнять однородные операции с отдельными объектами и их совокупностями.
Можно сказать, что пат­терн Компоновщик нарушает принцип одной обязанности ради ***прозрачности***. Что такое «прозрачность»? Благодаря тому, что были включены в интерфейс Component операции управле­ния как дочерними узлами, так ***и*** листьями, клиент выполняет одинаковые операции с комбинациями и листовыми узлами. Та­ким образом, вид узла становится прозрачным для клиента. Од­нако при этом приходится частично жертвовать ***безопасностью***, потому что клиент может попытаться выполнить с элементом неподходящую или бессмысленную операцию (например, по­пытаться добавить меню в листовой элемент). Речь идет о со­знательном архитектурном решении.
## Схемы
![scheme-1](scheme-1.png)
![scheme-2](scheme-2.png)