composite模式
意图:
composite属于对象结构型模式,它将对象组合成树形结构以表示“部分-整体”的层次结构。Composite使得用户对单个对象和组合对象的使用具有一致性。
一、composite模式适用场景
1.需要表示对象的部分-整体的层次结构(这个看结构图就能看出来)
2.希望用户忽略组合对象和单个对象的不同,如下类图(Line、Rectangle、Text皆为单个对象,Picture为组合对象),对用户而已,它们都只需要调用Draw接口即可进行调用。
二、C++代码实现示例
1.composite模式的典型结构图
2.典型结构图的C++实现(核心代码部分)
component类核心代码:
Leaf类核心代码
客户使用部:
程序运行结果
模式优点总结
优点:
1.由于客户可以一致地使用组合对象与单个对象,故可以一定程度上简化客户代码
2.使得更加容易增加新类型的组件
3.使你的设计更加一般化