定义
组合模式属于对象的结构模式,又叫部分-整体模式。
组合模式将对象组合成树形结构来表现"整体/部分"层次结构。组合模式可以让客户端以一致的方式处理个别对象以及对象组合。
目的是"统一处理个别对象和组合对象"。
树形结构由树枝,树叶组成。树枝上有树枝,树叶。树叶不可再分。
结构和角色
抽象构建(Component)角色: 给参加组合的对象规定一个接口,这个角色给出共有的接口及其默认行为。
树叶构建(Leaf)角色: 代表参加组合的树叶对象。一个树叶没有下级的子对象。定义出参加组合的原始对象的行为。
树枝构建(Composite)角色: 代表参加组合的有子对象的对象。并给出树枝构建对象的行为。
system code ....
应用
需要描述对象的部分和整体的等级结构。
需要客户端忽略掉个体构件和组合构件的区别。客户端必须平等对待所有的构件,包括个体构件和组合构件。
优缺点
组合模式可以很容易地增加新种类的构件。
使用组合模式可以使客户端变得很容易设计,因为客户端不需要知道构件是树叶构件还是树枝构件。
---
不太容易控制树枝构件的类型。
使用继承的方法来增加新的行为很困难。