Skip to content

Latest commit

 

History

History
 
 

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Компоновщик — это структурный паттерн, который позволяет создавать дерево объектов и работать с ним так же, как и с единичным объектом.

Компоновщик давно стал синонимом всех задач, связанных с построением дерева объектов.
Все операции компоновщика основаны на рекурсии и «суммировании» результатов на ветвях дерева.

Очень практичный паттерн Компоновщик воплощает собой суть полиморфизма, как мне кажется.

В данном примере представлены вложенные в контейнеры объекты:
Army содержит в себе Squad
Squad содержит в себе Soldier

А коллекция iMilitaries в Main содержит в себе все объекты имплементирующие IMilitary интерфейс
В данном примере мы за счет имплементации интерфейса IMilitary в военных объектах и реализации метода getPower() получили
возможность работать с иерархией объектов Army -> Squad -> Soldier как с одинаковыми объектами, но еще и добавили туда же объекты
не принадлежащие к данной иерархии - MilitaryEquipment
Если появится еще какие-то военные объекты то мы запросто добавим их к "Компоновщику"