This repository has been archived on 2022-11-20. You can view files and clone it, but cannot push or open issues or pull requests.
patterns/composite
Alexander Zhirov 41ff6962c3 composite code 2022-11-18 01:06:11 +03:00
..
composite composite code 2022-11-18 01:06:11 +03:00
README.md composite 2022-11-17 16:36:56 +03:00
scheme-1.png composite 2022-11-17 16:36:56 +03:00
scheme-2.png composite 2022-11-17 16:36:56 +03:00

README.md

Компоновщик

Структурный паттерн проектирования, который позволяет сгруппировать множество объектов в древовидную структуру, а затем работать с ней так, как будто это единичный объект.

Паттерн Компоновщик объединяет объекты в древовидные структуры для представления иерархий «часть/целое». Компоновщик позво­ляет клиенту выполнять однородные операции с отдельными объектами и их совокупностями.

Можно сказать, что пат­терн Компоновщик нарушает принцип одной обязанности ради прозрачности. Что такое «прозрачность»? Благодаря тому, что были включены в интерфейс Component операции управле­ния как дочерними узлами, так и листьями, клиент выполняет одинаковые операции с комбинациями и листовыми узлами. Та­ким образом, вид узла становится прозрачным для клиента. Од­нако при этом приходится частично жертвовать безопасностью, потому что клиент может попытаться выполнить с элементом неподходящую или бессмысленную операцию (например, по­пытаться добавить меню в листовой элемент). Речь идет о со­знательном архитектурном решении.

Схемы

scheme-1

scheme-2