定义:组合模式也叫合成模式,有时又叫做部分-整体模式,主要用来描述部分和整体的关系。将对象组合成树形结构以表示“部分-整体”的层次结构,使得用户对单个对象和组
合对象的使用具有一致性。
一、组合模式的三个角色
1. 抽象构建角色:定义参加组合对象的共有方法和树形,可以定义一些默认的行为或属性。
2. 叶子构件:下面没有其他分支,遍历的最小单位。
3. 树枝构件:它的作用是组合树枝节点和叶子节点形成一个树形结构。
二、组合模式的优点
1. 高层模块简单调用。树形结构中所有节点都是抽象构建角色,局部调用和整体调用没有区别,高层模块不需要关心自己处理的是单个对象还是整个组合结构
2. 节点自由增加。
三、组合模式的缺点
树叶和树枝都使用实现类直接定义,不符合依赖倒置原则,使用组合模式时应该考虑清楚。
四、组合模式的使用场景
1. 维护和展示部分-整体关系,例如树形菜单,文件和文件夹
2.
从一个整体中能够独立出部分模块或功能的场景
五、组合模式的注意事项
只要是树形结构,就要考虑使用组合模式;只要是体现局部和整体关系,而且这种关系还比较紧密,可以考虑使用组合模式。
六、组合模式的扩展
1. 真实的组合模式
2. 透明的组合模式。组合模式有两种不同的实现:透明模式和安全模式。透明模式把用来组合使用的方法都放到抽象类中。透明模式的好处是它基本遵循了依赖倒置原则。
七、组合模式的遍历
从上往下和从下往上遍历
八、最佳实践
合对象的使用具有一致性。
一、组合模式的三个角色
1. 抽象构建角色:定义参加组合对象的共有方法和树形,可以定义一些默认的行为或属性。
2. 叶子构件:下面没有其他分支,遍历的最小单位。
3. 树枝构件:它的作用是组合树枝节点和叶子节点形成一个树形结构。
二、组合模式的优点
1. 高层模块简单调用。树形结构中所有节点都是抽象构建角色,局部调用和整体调用没有区别,高层模块不需要关心自己处理的是单个对象还是整个组合结构
2. 节点自由增加。
三、组合模式的缺点
树叶和树枝都使用实现类直接定义,不符合依赖倒置原则,使用组合模式时应该考虑清楚。
四、组合模式的使用场景
1. 维护和展示部分-整体关系,例如树形菜单,文件和文件夹
2.
从一个整体中能够独立出部分模块或功能的场景
五、组合模式的注意事项
只要是树形结构,就要考虑使用组合模式;只要是体现局部和整体关系,而且这种关系还比较紧密,可以考虑使用组合模式。
六、组合模式的扩展
1. 真实的组合模式
2. 透明的组合模式。组合模式有两种不同的实现:透明模式和安全模式。透明模式把用来组合使用的方法都放到抽象类中。透明模式的好处是它基本遵循了依赖倒置原则。
七、组合模式的遍历
从上往下和从下往上遍历
八、最佳实践