在 Design Patterns : Elements of Reusable Object-Oriented Software 一书中,它说:
“复合设计模式将对象组合成树结构来表示部分-整体层次结构。”
在维基百科中,复合设计模式被定义为:
“复合模式描述了一组对象,这些对象的处理方式与同一类型对象的单个实例相同。复合的目的是将对象“组合”到树结构中,以表示部分-整体层次结构。”
复合设计模式图片:
如果我Composite
存储components
为有向无环图(例如,它只存储队列数据结构中作为 DAC 源的组件,并且这些源引用另一个组件等等......),这不是树,因为它违反了某些树结构条件。我还能说我使用了复合设计模式吗?
您可以将组件存储在您喜欢的任何数据结构中。关键是您的每个组件也可以被视为“整体”。
最简单的例子是包含子视图的 CompositeView 对象。CompositeView 是一个视图,它的子视图对象也是视图。所以你的对象有一个通用的接口/抽象类。使用什么数据结构来存储子视图根本无关紧要。
在提到的树状结构中,您的列表/集/dag/whatever... 组件为给定的父节点定义了一组子节点。
另一个例子可能是Brick、Wall、House、Block。墙是由许多砖块组成的;以同样的方式,房屋由四堵墙组成(例如让我说房屋没有屋顶),而街区由许多房屋组成。Composite 模式中的 Brick 代表一个 Leaf,而 Wall、House、Block 是 Composite 的特化,但都可以被视为 ConstructionComponents(或 ConstructionEntities)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句