《设计模式之禅》笔记16 -- 组合模式

来源:互联网 发布:阿里云邮件推送 编辑:程序博客网 时间:2024/05/21 10:14
定义:组合模式也叫合成模式,有时又叫做部分-整体模式,主要用来描述部分和整体的关系。将对象组合成树形结构以表示“部分-整体”的层次结构,使得用户对单个对象和组


合对象的使用具有一致性。


一、组合模式的三个角色


1. 抽象构建角色:定义参加组合对象的共有方法和树形,可以定义一些默认的行为或属性。


2. 叶子构件:下面没有其他分支,遍历的最小单位。


3. 树枝构件:它的作用是组合树枝节点和叶子节点形成一个树形结构。


二、组合模式的优点


1. 高层模块简单调用。树形结构中所有节点都是抽象构建角色,局部调用和整体调用没有区别,高层模块不需要关心自己处理的是单个对象还是整个组合结构


2. 节点自由增加。


三、组合模式的缺点


树叶和树枝都使用实现类直接定义,不符合依赖倒置原则,使用组合模式时应该考虑清楚。


四、组合模式的使用场景


1. 维护和展示部分-整体关系,例如树形菜单,文件和文件夹


2. 
从一个整体中能够独立出部分模块或功能的场景


五、组合模式的注意事项


只要是树形结构,就要考虑使用组合模式;只要是体现局部和整体关系,而且这种关系还比较紧密,可以考虑使用组合模式。


六、组合模式的扩展


1. 真实的组合模式


2. 透明的组合模式。组合模式有两种不同的实现:透明模式和安全模式。透明模式把用来组合使用的方法都放到抽象类中。透明模式的好处是它基本遵循了依赖倒置原则。


七、组合模式的遍历


从上往下和从下往上遍历


八、最佳实践

0 0