Aha!设计模式(54)-组合模式(1)

网友投稿 698 2022-11-13

Aha!设计模式(54)-组合模式(1)

Aha!设计模式(54)-组合模式(1)

意图

使用组合的方式管理下级要素,在实现一个树形数据结构的同时为各级节点提供相同的接口,使用者可以以相同的观点看待树上的每个节点。

动机

现实世界中存在很多的树形结构,先看两个例子。首先是公司组织结构图:

接下来是电脑构成图:

通过观察可以发现,这两个例子中的树形结构具有以下的特征:

树上存在包含其他节点的父节点,也存在不包含其他节点的页子节点。父节点和下级节点可以看作是整体和部分的关系下级节点也有可能是其他节点的父节点。这种包含关系可能会有很多层。通常会存在一些共通操作,需要从父节点扩散到子节点。

最后一点图中没有体现,这里进行补充说明。所谓的共通操作,对于公司组织图来说,可以是发布通知,收集绩效数据,考评等;对于计算机来说可以是开关电源等。当然,实际需要哪种操作时根据需求决定的,但是一般的情况下都可以很容易地找出共通操作。

对于上面的树状结构建模时,一般的方法就是为每种要素设计一个类,但是这样一来有一个问题:包含其他要素的父节点类都有两个共通功能:一个是需要管理子节点,一个是要扩散操作。于是对类图进行优化,得到下面的类图。

在这个类图中PartsGroup承担了管理子节点和扩散共通操作的职责。它可以管理任何的Parts类,也包含另外的PartsGroup对象。这种组合关系可以根据需求多次重复。

这样一来,利用者就不必关心具体的节点类型,是否包含下级节点,有多少层下级节点,只管对眼前的节点调用其操作就好了。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Aha!设计模式(42)-创建型模式的讨论(1)
下一篇:SpringBoot实现整合微信支付方法详解
相关文章

 发表评论

暂时没有评论,来抢沙发吧~