大话设计模式读书笔记-19组合模式

作者: QuietHeart | 来源:发表于2020-04-16 10:44 被阅读0次
bigtalk.jpg

第19章 分公司=一部门——组合模式

概念

组合模式将对象组合成树形结构以表示“部分”、“整体”的层次关系。使得用户可以以同样的方式对待单个对象和组合对象。比如文本编辑中,字、句、段的格式化。

实现

包含部分:

  • Component:公共接口,描述了各层次内部和之间可以一致对待的通用功能。包含"Add"/"Remove"
  • Composite:分支(继承Component),可以包含"Add"/"Remove"接口添加子成员
  • Leaf:叶子(继承Component),"Add"/"Remove"接口无用
  • Client: 创建根分支、叶子,组织成树形结构,并访问。除了创建对象处,所有的使用接口传参都为父类即可。

类图如下:

img

客户端使用:

img img

透明模式和安全模式

透明模式中,分支和叶子继承同样的类,让客户端避免了判断是叶子还是非叶子,只是叶子中的增删子成员无意义;安全模式相反,并且用不同的类标识叶子和树枝,但是使用时需要判断。

场景

使用场景:整体与部分,并且两者需要被同样对待。比如公司与分公司、办事处层级不同,但是使用同一套管理方式,都有财务、人力资源功能;不同在于公司、分公司可以增添子节点(一个公司多个分公司,一个分公司多个办事处),而办事处做为叶子,增添字节点的方法没有意义。这样使用组合模式,将它们组织成树形接口,再统一的方式管理整体与部分,比单独定义一个“财务”、“人力”类,给各个有层次的公司结构中平行共享的使用要合理的多。

特点:组合模式可以让用户一致地使用组合结构和单个对象。

需要仔细思考。

相关文章

网友评论

    本文标题:大话设计模式读书笔记-19组合模式

    本文链接:https://www.haomeiwen.com/subject/zuvhphtx.html