intermediate
Composite
Обрабатывайте leaves и groups через один interface, когда clients должны uniformly traverse или operate on tree.
Composite позволяет клиентам одинаково обращаться к отдельным объектам и группам через общий component interface — файловые системы, UI-деревья, оргструктуры, scene graphs. Операции render, sum, validate или export рекурсивно проходят детей без повсеместных `instanceof` лестниц.
На интервью: когда рекурсия в composite nodes, а когда внешний visitor. Immutability для undo-friendly деревьев.
Типовые ошибки: циклы parent-child; разные инварианты у leaves и containers; публичные mutable списки детей.
Чеклист:
- Leaf и composite реализуют один интерфейс.
- Container централизованно держит инварианты детей.
- Явная стратегия обхода (DFS, BFS).
- Тесты на пустые composite и глубокую вложенность.