composite
This commit is contained in:
parent
935f9c7563
commit
9a6936ed7b
|
@ -16,7 +16,8 @@
|
||||||
|
|
||||||
1. [Декоратор](decorator/)
|
1. [Декоратор](decorator/)
|
||||||
2. [Адаптер](adapter/)
|
2. [Адаптер](adapter/)
|
||||||
2. [Фасад](facade/)
|
3. [Фасад](facade/)
|
||||||
|
4. [Компоновщик](composite/)
|
||||||
|
|
||||||
### Пораждающие
|
### Пораждающие
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
# Компоновщик
|
||||||
|
|
||||||
|
Структурный паттерн проектирования, который позволяет сгруппировать множество объектов в древовидную структуру, а затем работать с ней так, как будто это единичный объект.
|
||||||
|
|
||||||
|
Паттерн **Компоновщик** объединяет объекты в древовидные структуры для представления иерархий «часть/целое». Компоновщик позволяет клиенту выполнять однородные операции с отдельными объектами и их совокупностями.
|
||||||
|
|
||||||
|
Можно сказать, что паттерн Компоновщик нарушает принцип одной обязанности ради ***прозрачности***. Что такое «прозрачность»? Благодаря тому, что были включены в интерфейс Component операции управления как дочерними узлами, так ***и*** листьями, клиент выполняет одинаковые операции с комбинациями и листовыми узлами. Таким образом, вид узла становится прозрачным для клиента. Однако при этом приходится частично жертвовать ***безопасностью***, потому что клиент может попытаться выполнить с элементом неподходящую или бессмысленную операцию (например, попытаться добавить меню в листовой элемент). Речь идет о сознательном архитектурном решении.
|
||||||
|
|
||||||
|
## Схемы
|
||||||
|
|
||||||
|
![scheme-1](scheme-1.png)
|
||||||
|
|
||||||
|
![scheme-2](scheme-2.png)
|
Binary file not shown.
After Width: | Height: | Size: 87 KiB |
Binary file not shown.
After Width: | Height: | Size: 380 KiB |
Reference in New Issue