composite

This commit is contained in:
Alexander Zhirov 2022-11-17 16:36:56 +03:00
parent 935f9c7563
commit 9a6936ed7b
4 changed files with 15 additions and 1 deletions

View File

@ -16,7 +16,8 @@
1. [Декоратор](decorator/) 1. [Декоратор](decorator/)
2. [Адаптер](adapter/) 2. [Адаптер](adapter/)
2. [Фасад](facade/) 3. [Фасад](facade/)
4. [Компоновщик](composite/)
### Пораждающие ### Пораждающие

13
composite/README.md Normal file
View File

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

BIN
composite/scheme-1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

BIN
composite/scheme-2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 380 KiB