(结构型模式)Composite——组合模式
1、意图
组合模式:将对象组合成树形结构以表示“部分——整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性
2、优缺点分析
GOOD:整体和部分可以被一致对待(如WORD中复制一个文字、一段文字、一篇文章都是一样的操作)
用户不用关心到底是处理一个叶结点还是处理一个组合组件,也就不用为定义组合而写一些选择判断语句,即用户可以一致的使用组合结构和单个对象。
适用情况:当需求中是体现部分与整体层次的结构时,以及希望用户可以忽略组合对象与单个对象的不同,统一地使用组合结构中的所有对象时,就应该考虑用组合模式
3、UML图
抽象基类:
1)Component:为组合中的对象声明接口,声明了类公有接口的缺省行为,声明了一个接口函数可以访问Component的子组件。
接口函数:
1)Component::Operation:定义了各个组件共有的行为接口,由各个组件的具体实现
2)Component::Add:添加一个子组件
3)Component::Remove:删除一个子组件
4)Component::GetChild:获得子组件的指针
解析:组合模式是为了解决组件之间的递归组合提供了解决的办法,它主要分为两个派生类,其中的Leaf是叶子结点,也就是不再含有子组件的结点;而Composite是继续含有子组件的类。