-
Notifications
You must be signed in to change notification settings - Fork 3
Composite
Pandas edited this page Jun 17, 2017
·
1 revision
Компонует объекты в древовидные структуры для представления иерархий часть-целое. Позволяет клиентам единообразно трактовать индивидуальные и составные объекты.
Используйте паттерн компоновщик, когда:
- Нужно представить иерархию объектов вида часть-целое;
- Хотите, чтобы клиенты единообразно трактовали составные и индивидуальные объекты.
- Component - компонент:объявляет интерфейс для компонуемых объектов; предоставляет подходящую реализацию операций по умолчанию, общую для всех классов; объявляет интерфейс для доступа к потомкам и управления ими; определяет интерфейс для доступа к родителю компонента в рекурсивной структуре и при необходимости реализует его. Описанная возможность необязательна;
- Leuf - лист: представляет листовые узлы композиции и не имеет потомков; определяет поведение примитивных объектов в композиции;
- Composite - составной объект: определяет поведение компонентов, у которых есть потомки; хранит компоненты-потомки; реализует относящиеся к управлению потомками операции в интерфейсе класса Component;
- Client - клиент: манипулирует объектами композиции через интерфейс Component.
- Определяет иерархии классов, состоящие из примитивных и составных объектов.
- Упрощает архитектуру клиента.
- Облегчает добавление новых видов компонентов.
- Способствует созданию общего дизайна.
