Skip to content

Composite

Pandas edited this page Jun 17, 2017 · 1 revision

Назначение

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

Применимость

Используйте паттерн компоновщик, когда:

  • Нужно представить иерархию объектов вида часть-целое;
  • Хотите, чтобы клиенты единообразно трактовали составные и индивидуальные объекты.

Структура

Imgur

Участники

  • Component - компонент:объявляет интерфейс для компонуемых объектов; предоставляет подходящую реализацию операций по умолчанию, общую для всех классов; объявляет интерфейс для доступа к потомкам и управления ими; определяет интерфейс для доступа к родителю компонента в рекурсивной структуре и при необходимости реализует его. Описанная возможность необязательна;
  • Leuf - лист: представляет листовые узлы композиции и не имеет потомков; определяет поведение примитивных объектов в композиции;
  • Composite - составной объект: определяет поведение компонентов, у которых есть потомки; хранит компоненты-потомки; реализует относящиеся к управлению потомками операции в интерфейсе класса Component;
  • Client - клиент: манипулирует объектами композиции через интерфейс Component.

Результаты

  • Определяет иерархии классов, состоящие из примитивных и составных объектов.
  • Упрощает архитектуру клиента.
  • Облегчает добавление новых видов компонентов.
  • Способствует созданию общего дизайна.

Clone this wiki locally