在“设计模式:可重用的面向对象软件的元素”一书中,它写道:
“复合设计模式将对象组合成树结构,以表示部分的整体层次结构。”
在wikipedia中,复合设计模式被定义为:
复合模式描述一组对象,这些对象被视为同一类型对象的单个实例。组合的目的是将对象“组合”到树结构中,以表示部分的整体层次结构。
组合设计图案图片:

如果我的Composite将components存储为有向无圈图(例如,它只在队列数据结构中存储作为DAC源的组件,而这些源具有对另一个组件的引用,等等)。)这不是树,因为它违反了某些树结构条件。我还可以说我使用了复合设计模式吗?
发布于 2018-05-01 12:37:32
您可以将组件存储在任意数据结构中。关键是,您的每个组件也可以被视为“整体”。
最简单的示例是包含子视图的CompositeView对象。CompositeView是一个视图,它的子视图对象也是视图。因此,您有一个对象的公共接口/抽象类。使用什么数据结构来存储子视图并不重要。
在上面提到的类似树的结构中,您的列表/集/dag/任何.组件定义给定父节点的一组子节点。
另一个例子可以是Brick,Wall,House,Block。墙是由许多砖块组成的;同样的,一所房子是由四面墙组成的(例如,让我说一所房子没有屋顶)和一座房子是由很多房子组成的。组合模式中的砖块表示叶子,而墙、房子、块则是复合的特例,但它们都可以被认为是ConstructionComponents (或ConstructionEntities)。
https://stackoverflow.com/questions/50107485
复制相似问题