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 и глубокую вложенность.