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

作者 : 开心源码 本文共658个字,预计阅读时间需要2分钟 发布时间: 2022-05-13 共146人阅读

bigtalk.jpg

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

概念

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

实现

包含部分:

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

类图如下:

img

用户端使用:

imgimg

透明模式和安全模式

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

场景

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

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

需要仔细思考。

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 大话设计模式读书笔记-19组合模式

发表回复