Пытаясь спроектировать иерархию классов, которая допускает композицию (набор элементов), я прихожу к блокировщику, поскольку на самом деле не знаю, какой шаблон применить здесь, но я знаю, что он есть.
Контекст является следующим.
Я хотел бы определить вид Structure
, который содержит несколько Element
объектов. Тем не менее, в этих Element
объектах у меня может быть больше Element
объектов, поскольку они могут быть вложены n
градусов внутрь.
Я могу думать о Decorator, поскольку это как "взять элемент и украсить его все, что вы хотите ", но не уверен, что это то, что мне действительно нужно с тех пор, проверьте диаграмму ниже.
Что, если ConcreteElement
содержит еще один Element
или List<Element>
? Есть ли для этого подшаблон или я могу просто вывести те, кто находится внутри класса, в качестве атрибутов и обработать логи c в пределах process()
?
Хотелось бы установить элементы как структуру и затем каждый элемент может вызвать себя или любой из его дочерних объектов Element того же уровня в иерархии, чтобы завершить себя.