Компоновщик — это структурный паттерн, который позволяет создавать дерево объектов и работать с ним так же, как и с единичным объектом.
Компоновщик давно стал синонимом всех задач, связанных с построением дерева объектов. Все операции компоновщика основаны на рекурсии и «суммировании» результатов на ветвях дерева.
Давайте попробуем понять паттерн Компоновщик, используя для примера файловую систему ОС. Внутри нее есть два типа объектов: файлы и папки. В некоторых случаях они должны восприниматься как одно и то же. Здесь нам пригодится паттерн проектирования Компоновщик.
Представьте, что вам нужно провести поиск по конкретному ключевому слову в вашей файловой системе. Такая операция поиска применяется в равной степени и к файлам, и к папкам. В случае файла, она только проверит содержимое файла, а в случае папки – обработает все файлы этой папки для нахождения ключевого слова.