设计模式—结构型-Composite(组合)
来源:互联网 发布:网络买彩票 编辑:程序博客网 时间:2024/05/14 20:00
设计模式—结构型-Composite(组合)
1. 意图
将对象组合成树形结构以表示“部分-整体”的层次结构。Composite使得用户对单个对象和组合对象的使用具有一致性。
2. 结构图
3. 简述
几乎所有的用户界面系统(GUI)都使用了这个模式。比如MFC系统的基于HWND的窗口控件,GDI+系统的基于Graphics的组件,开源项目QT等,GUI即MVC模式中的View。
它的好处在于:客户程序Client不用关心现在所操纵的是一个对象(比如Button或Dialog),还是组合对象(比如一个有很多子控件的Window或Dialog),都可以调用类似Show、Hide、Disable、Enable、MoveWindow等方法,而不用关心操纵的究竟是个Button还是Dialog或是CheckBox等等。
从结构图看出,该模式有三个部分组成:
Component
为整个系统提供的所有对象提供借口,也是外界Client调用的接口。比如MFC中的CWnd。为MFC的GUI所有控件的父类。并且是外界于GUI系统交流的接口。
Composite
可以有子对象的对象。比如MFC中的CDialog。可以有很多子控件,如CButton、CEdit等等。
Leaf
不能有子对象的对象。比如MFC中的CSliderCtrl,它不可能有子控件了。
下图是MFC的GUI系统中的类的层级图的一部分
4. 实例代码
class Component{virtual ~ Component();// many common opetationsvoid Operation();// sub-objectvoid Add(Component* sub);void Remove(Component* sub);Component* Get(int index);};class Composite : public Component{virtual ~ Composite ();// many common opetationsvoid Operation();// sub-objectvoid Add(Component* sub);void Remove(Component* sub);Component* Get(int index);};class Leaf : public Component{virtual ~ Leaf ();// many common opetationsvoid Operation();};
0 0
- 设计模式—结构型-Composite(组合)
- 结构型设计模式---组合模式(Composite)
- JAVA设计模式(11) —<结构型>组合模式(Composite)
- 设计模式(七)组合模式Composite(结构型)
- 设计模式(七)组合模式Composite(结构型)
- 设计模式(七)组合模式Composite(结构型)
- 设计模式(九)组合模式(Composite)-结构型
- 设计模式(七)组合模式Composite(结构型)
- 设计模式(3)-结构型-组合模式(Composite)
- 重学设计模式 - Composite(组合)模式 - 结构型
- 设计模式--组合模式Composite(结构型)
- 设计模式-结构型- 组合模式(Composite)
- 结构型设计模式之组合模式(Composite Pattern)
- [设计模式-结构型]组合(Composite )
- 设计模式-结构型-composite 组合
- composite组合设计模式(结构型)学习
- 【设计模式】结构型模式——组合模式(Composite Pattern)
- 设计模式学习(结构型模式)—组合模式(Composite)
- 终于写起了我的第一篇CSDN博客
- 更改默认管理员名称admin
- 关于A20 SPI各项问题总结
- fill函数 神奇的迭代器
- 菜鸟SEOer浅谈robots
- 设计模式—结构型-Composite(组合)
- SEOer浅谈robots
- OK6410学习之裸板LED程序及RAM烧录
- 彻底征服<<指针数组和指向数组的指针>>
- 降低改版带来的风险
- poj 2200 A Card Trick(模拟)
- linux内核定时器
- poj1789
- 黑马程序员 Java面向对象——String类 StringBuffer类 StringBuiler类