复合设计模式定义

时间:2018-04-30 20:06:53

标签: oop design-patterns composite

在“设计模式:可重复使用的面向对象软件的元素”一书中,它说:

"复合设计模式将对象组合成树结构,以表示部分整体层次结构。"

在维基百科中,复合设计模式定义为:

"复合模式描述了一组对象,其处理方式与同一类型对象的单个实例相同。复合材料的目的是“组成”#34;树对象中的对象表示部分整体层次结构。"

复合设计图案的图片:

enter image description here

如果我的Compositecomponents存储为有向非循环图(例如,它只存储队列数据结构中DAC源的组件,并且这些源引用了其他组件等等...... )它不是树,因为它违反了一些树状结构条件。我还能说我使用过复合设计模式吗?

1 个答案:

答案 0 :(得分:2)

您可以将组件存储在您喜欢的任何数据结构中。关键是你的每个组件也可以被视为“整体”。

最简单的示例是包含子视图的CompositeView对象。 CompositeView是一个View,它的子视图对象也是Views。所以你有一个对象的通用接口/抽象类。完全没有关系用于存储子视图的数据结构。

在提到的树状结构中,list / set / dag / whatever ... of components定义了给定父节点的一组子节点。

另一个例子可能是 Brick Wall House 阻止。 Wall 许多砖组成;以同样的方式,一个房子四个墙组成(例如让我说房子没有屋顶)和一个Block 许多房屋组成。复合图案中的砖代表一个Leaf,而Wall,House,Block是Composite的特化,但 all 可以被视为ConstructionComponents(或ConstructionEntities)。