Linux学习|Gentoo/Arch/FreeBSDLinuxLinux学习之路

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

2020-04-16  本文已影响0人  QuietHeart
bigtalk.jpg

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

概念

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

实现

包含部分:

类图如下:

img

客户端使用:

img img

透明模式和安全模式

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

场景

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

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

需要仔细思考。

上一篇 下一篇

猜你喜欢

热点阅读