在四本书的组合中,用图定义了Composite模式
c# - 为什么在Component接口(interface)中声明复合方法?-LMLPHP

为什么方法仅与Component接口的Composite部分有关?如果方法(AddRemoveGetchild)是Composite的一部分而不是常规接口,则Composites和Leafs仍将同时实现Component接口,因此可以互换使用,因为复合模式的目的。通过使LeafComposite都实现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/

10-14 14:50