在四本书的组合中,用图定义了Composite模式
为什么方法仅与Component
接口的Composite部分有关?如果方法(Add
,Remove
,Getchild
)是Composite
的一部分而不是常规接口,则Composites和Leafs仍将同时实现Component
接口,因此可以互换使用,因为复合模式的目的。通过使Leaf
和Composite
都实现Component
(现在只需要Operation
),客户端仍然可以像对待它们一样
Component anobject = new Leaf();
Component another = new Composite();
another.Operation();
anobject.Operation();
最佳答案
因为您对待复合材料和叶子的方式相同。您编程为接口,而不是具体对象。
在您的示例中,您无法执行以下操作:
Component l = new Leaf();
Component c = new Composite();
// now you can't do this because Composite doesn't know about add() method, only concrete subclass know in your variation.
composite.add(l);
关于c# - 为什么在Component接口(interface)中声明复合方法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56047292/