Компонувальник — це структурний патерн, який дозволяє створювати дерево об’єктів та працювати з ним так само, як і з одиничним об’єктом.
Компонувальник давно став синонімом всіх завдань, пов’язаних з побудовою дерева об’єктів. Всі операції компонувальника базуються на рекурсії та «підсумовуванні» результатів на гілках дерева.
Давайте спробуємо зрозуміти патерн Компонувальник, використовуючи за приклад файлову систему ОС. Всередині неї є два типи об’єктів: файли і папки. У деяких випадках вони мусять сприйматися як одне і те саме. Тут нам стане в нагоді патерн проектування Компонувальник.
Уявіть, що вам потрібно провести пошук за конкретним ключовим словом у вашій файловій системі. Така операція пошуку застосовується як до файлів, так і до папок. У випадку файлу, вона тільки перевірить вміст файлу, а у випадку папки — обробить всі файли цієї папки, очікуючи на знаходження ключового слова.