这是复合模式的有效解释吗?

时间:2011-08-23 19:45:43

标签: design-patterns composite

我从复合模式中得到的一个建议是提供默认操作来处理Leaf节点的不适当的子管理操作(即,在AddChild上抛出异常,为子节点返回空枚举等)。

我对经典模式的理解是有一个带有Leaf子类和Composite子类的抽象类,但是如果你在父类中提供默认操作,是否它不能有效地消除对Leaf的需要?

有人这样做吗?

干杯,
Berryl

enter image description here

1 个答案:

答案 0 :(得分:2)

我们可能正在谈论不同的事情。我假设复合模式如http://en.wikipedia.org/wiki/Composite_pattern

所述

对于该模式,您不会公开不适用于叶节点的操作,例如AddChild(您的示例),因为Component接口(使用维基百科文章中的名称)是旨在仅公开可以在叶子或节点上执行的常见操作。所以不需要默认值。

维基百科文章中add()类上有一个Composite,但这是为了向复合“视图”添加内容,而不是添加到任何特定的数据结构。换句话说,您可以通过复合接口访问数据树的某些部分,但接口上的add()方法是从该集合中添加或删除项目,而不是从树本身中添加或删除。