Шаблон проектирования Компоновщик (Composite)
Компоновщик — это структурный шаблон проектирования, который объединяет объекты в древовидную структуру, обеспечивая тем самым представление иерархии от частного к целому. Composite позволяет клиентам одинаково обращаться как к отдельным объектам, так и к группам объектов.
Для примера возьмем абстрактную организацию. Как известно, каждая организация компонуется из сотрудников, причем у каждого такого сотрудника, скажем так, существуют одинаковые свойства: служебные обязанности, заработная плата, отчетность и т. п. Так вот, шаблон Composite дает возможность клиентам работать в едином стиле с индивидуальными объектами.
Это можно продемонстрировать в коде. Итак, у нас есть Employee разных типов:
Соответственно, тогда у нас есть и организация, состоящая из нескольких разных типов сотрудников:
И затем это может быть использовано следующим образом:
Вот, пожалуй, и все. Осталось посмотреть пример Компоновщика на языке Java: https://github.com/iluwatar/java-design-patterns/tree/master/composite.
По материалам статьи «Design Patterns for Humans» — https://github.com/kamranahmedse/design-patterns-for-humans.