形象例子:

  Mary今天过生日。“我过生日,你要送我一件礼物。”“嗯,好吧,去 商店,你自己挑。”“这件T恤挺漂亮,买,这条裙子好看,买,这个包也不错,买。”“喂,买了三件了呀,我只答应送一件礼物的哦。”“什么呀,T恤加裙子加包包,正好配成一套呀,小姐,麻烦你包起来。”“……”,MM都会用Composite模式了,你会了没有?

合成模式:

  合成模式将对象组织到树结构中,可以用来描述整体与部分的关系。合成模式就是一个处理对象的树结构的模式。合成模式把部分与整体的关系用树结构表示出来。合成模式使得客户端把一个个单独的成分对象和由他们复合而成的合成对象同等看待。

作用:
  将对象组合成树形结构以表示“部分-整体”的层次结构。Composite使得用户对单个对象和组合对象的使用具有一致性。

UML:

抽象基类:
  1)Component:为组合中的对象声明接口,声明了类共有接口的缺省行为(如这里的Add,Remove,GetChild函数),声明一个接口函数可以访问Component的子组件.

接口函数:
  1)Component::Operatation:定义了各个组件共有的行为接口,由各个组件的具体实现.
  2)Component::Add添加一个子组件
  3)Component::Remove::删除一个子组件.
  4)Component::GetChild:获得子组件的指针.

解析:
  Component
模式是为解决组件之间的递归组合提供了解决的办法,它主要分为两个派生类,其中的Leaf是叶子结点,也就是不含有子组件的结点,而Composite是
含有子组件的类.举一个例子来说明这个模式,在UI的设计中,最基本的控件是诸如Button,Edit这样的控件,相当于是这里的Leaf组件,而比较
复杂的控件比如List则可也看做是由这些基本的组件组合起来的控件,相当于这里的Composite,它们之间有一些行为含义是相同的,比如在控件上作
一个点击,移动操作等等的,这些都可以定义为抽象基类中的接口虚函数,由各个派生类去实现之,这些都会有的行为就是这里的Operation函数,而添
加,删除等进行组件组合的操作只有非叶子结点才可能有,所以虚拟基类中只是提供接口而且默认的实现是什么都不做.

最新文章

  1. Mac如何删除MySQL,Mac下MySQL卸载方法
  2. 根据网址把图片下载到服务器C#代码
  3. [20130919]出现有持续性的Lazy Write
  4. ibatis mysql replace into 返回ID
  5. php var_export与var_dump 输出的不同
  6. javabean总结
  7. bzoj1044
  8. 《Oracle Database 12c DBA指南》第二章 - 安装Oracle和创建数据库(2.1 安装Oracle数据库软件和创建数据库概览)
  9. loadrunner SQL2008
  10. Asp.Net MVC4新特性指南(2):新特性介绍
  11. Struts---- <s:bean>标签
  12. 自己动手画一个HTML5的按钮
  13. SetupFactory +添加frm2.0工具
  14. UIScrollView 之图片缩放
  15. Android各种颜色dawable.xml中定义
  16. Ignatius and the Princess III --undo
  17. Android----------eclipse常用快捷键
  18. C++ 开源库
  19. AOP 切面编程
  20. WPF的消息机制

热门文章

  1. 2338: [HNOI2011]数矩形 - BZOJ
  2. 【数学】[BZOJ 3884] 上帝与集合的正确用法
  3. 在js中获取easyui datagrid的数据
  4. PAT-乙级-1040. 有几个PAT(25)
  5. Android名词解释
  6. IOS 录像软件
  7. POJ2513——Colored Sticks(Trie树+欧拉回路+并查集)
  8. 强强合体:Docker版Kali Linux发布
  9. 细说javascript 中的 window.open() 参数设置
  10. 【HDOJ】4373 Mysterious For