Шаблон проектирования «компоновщик» (Composite) используется для организации объектов в древовидную структуру с целью представления их в виде иерархии «часть-целое». То есть, объекты объединяются в древовидную структуру, где каждый узел может быть как отдельным объектом, так и группой объектов.
Компоновщик состоит из двух основных элементов — листьев и контейнеров. Листья являются базовыми элементами структуры, которые не могут иметь вложенных элементов. Контейнеры являются элементами, которые могут содержать как листья, так и другие контейнеры.
Таким образом, шаблон компоновщик позволяет обрабатывать как отдельные объекты, так и целые иерархии объектов с помощью общего интерфейса, что упрощает кодирование и управление объектами. Например, если у нас есть дерево элементов графического интерфейса, мы можем использовать компоновщик для представления дерева элементов в виде иерархии объектов, где каждый элемент может быть как листовым, так и контейнером, что позволяет нам управлять деревом целиком, а также его отдельными элементами.