复合设计模式定义

凯威

在 Design Patterns : Elements of Reusable Object-Oriented Software 一书中,它说:

“复合设计模式将对象组合成树结构来表示部分-整体层次结构。”

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

“复合模式描述了一组对象,这些对象的处理方式与同一类型对象的单个实例相同。复合的目的是将对象“组合”到树结构中,以表示部分-整体层次结构。”

复合设计模式图片:

在此处输入图片说明

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

阿尔格

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

最简单的例子是包含子视图的 CompositeView 对象。CompositeView 是一个视图,它的子视图对象也是视图。所以你的对象有一个通用的接口/抽象类。使用什么数据结构来存储子视图根本无关紧要。

在提到的树状结构中,您的列表/集/dag/whatever... 组件为给定的父节点定义了一组子节点。

另一个例子可能是BrickWallHouseBlock是由许多砖块组成的以同样的方式,房屋四堵墙组成(例如让我说房屋没有屋顶),而街区许多房屋组成Composite 模式中的 Brick 代表一个 Leaf,而 Wall、House、Block 是 Composite 的特化,但可以被视为 ConstructionComponents(或 ConstructionEntities)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章