В банде из четырех книг шаблон Composite определяется с помощью диаграммы
Почему методы связаны только с Composite частью интерфейса Component
?Если бы методы (Add
, Remove
, Getchild
) были частью Composite
, а не общим интерфейсом, Composites и Leaves по-прежнему оба реализовывали бы интерфейс Component
и, таким образом, использовались бы взаимозаменяемо, как один изЦели составного паттерна.Имея в Leaf
и Composite
реализацию Component
(для этого требуется только Operation
сейчас), клиент все равно будет обращаться с ними так же, как
Component anobject = new Leaf();
Component another = new Composite();
another.Operation();
anobject.Operation();