软件工程中的"General Hierarchy Pattern"是什么?
What is the "General Hierarchy Pattern" in software engineering?
我试图理解“一般层次结构模式”,但尽管我努力了,但仍然不清楚:
- 为什么使用它,它是如何工作的?
- 如何在 UML class 图中建模?
- 使用此模式我们将获得哪些好处?
这个模式是从哪里来的?
这个问题引起了我的注意,因为模式的名称并没有响起,但评论中提供的元素强烈暗示了众所周知的 composite pattern 的一些变体。一些快速研究表明,这种模式在该名称下并不广为人知。似乎只有几本书描述了它:
- Software Engineering - Principles and practices, by W.S.Jawadekar (16.2.2 节描述) 发表于 2004
- Object-Oriented Software Engineering: Practical Software Development using UML and Java, by T.Lethbridge & R.Laganiere (6.3节说明) 2001年出版(2004年第二版).
- Real-Time Embedded Systems, 范晓聪(6.3.4 中同化为复合模式的例子)2015 年发表
我找不到任何引用此模式的学术文章,至少在那个名称下是这样。
一般的层次结构模式是什么?
更广为人知的composite pattern描述了一个通用的层次结构,其中一个组件可以由专门化该组件的节点的层次聚合组成,其中一些作为叶节点。这是一个非常通用的设计模式,涵盖了多种形式的层次结构。
但是,组合本身是更一般的“一般层次结构模式”的特化。根据 T.Lethbridge & R.Laganiere:
- 抽象
Node
定义了特性并公开了层次结构中每个节点共有的接口。每个节点都可以有一个“上级”;
- 一般节点至少有两个特化,
SuperiorNode
和 NonSuperiorNode
取决于它们是否必须有下级(即是另一个节点的上级)。
- 节点之间的关系可以是任何类型的关联(即不仅仅是组合中的聚合),具有可选对多(组合中的)或多对多的多样性
在 UML 中,这看起来像:
就个人而言,我对多对多上级有点困惑。以经理和员工为例,这看起来像一个矩阵,而矩阵不再是真正的层次结构。作者提到它是一个格子,但没有争论层次结构的相关性。
关于此模式的剩余问题
它用于表示任何一种层次结构。例如:
manager/employee 层次结构,经理可以对一组员工负责,其中一些员工本身就是经理,对一组员工负责。
department/employee 层次结构可以使用组合建模,因为部门由子部门组成,而子部门最终由人组成。
此模式的主要好处是抽象 Node
公开了一个可用于所有节点的接口。这有助于设计可以在层次结构中无缝导航的算法,而无需关心每个不同层次结构级别的特定细节。
我试图理解“一般层次结构模式”,但尽管我努力了,但仍然不清楚:
- 为什么使用它,它是如何工作的?
- 如何在 UML class 图中建模?
- 使用此模式我们将获得哪些好处?
这个模式是从哪里来的?
这个问题引起了我的注意,因为模式的名称并没有响起,但评论中提供的元素强烈暗示了众所周知的 composite pattern 的一些变体。一些快速研究表明,这种模式在该名称下并不广为人知。似乎只有几本书描述了它:
- Software Engineering - Principles and practices, by W.S.Jawadekar (16.2.2 节描述) 发表于 2004
- Object-Oriented Software Engineering: Practical Software Development using UML and Java, by T.Lethbridge & R.Laganiere (6.3节说明) 2001年出版(2004年第二版).
- Real-Time Embedded Systems, 范晓聪(6.3.4 中同化为复合模式的例子)2015 年发表
我找不到任何引用此模式的学术文章,至少在那个名称下是这样。
一般的层次结构模式是什么?
更广为人知的composite pattern描述了一个通用的层次结构,其中一个组件可以由专门化该组件的节点的层次聚合组成,其中一些作为叶节点。这是一个非常通用的设计模式,涵盖了多种形式的层次结构。
但是,组合本身是更一般的“一般层次结构模式”的特化。根据 T.Lethbridge & R.Laganiere:
- 抽象
Node
定义了特性并公开了层次结构中每个节点共有的接口。每个节点都可以有一个“上级”; - 一般节点至少有两个特化,
SuperiorNode
和NonSuperiorNode
取决于它们是否必须有下级(即是另一个节点的上级)。 - 节点之间的关系可以是任何类型的关联(即不仅仅是组合中的聚合),具有可选对多(组合中的)或多对多的多样性
在 UML 中,这看起来像:
就个人而言,我对多对多上级有点困惑。以经理和员工为例,这看起来像一个矩阵,而矩阵不再是真正的层次结构。作者提到它是一个格子,但没有争论层次结构的相关性。
关于此模式的剩余问题
它用于表示任何一种层次结构。例如:
manager/employee 层次结构,经理可以对一组员工负责,其中一些员工本身就是经理,对一组员工负责。
department/employee 层次结构可以使用组合建模,因为部门由子部门组成,而子部门最终由人组成。
此模式的主要好处是抽象 Node
公开了一个可用于所有节点的接口。这有助于设计可以在层次结构中无缝导航的算法,而无需关心每个不同层次结构级别的特定细节。