组合模式
2016-01-02 18:54
239 查看
定义:“将对象组合成树形结构以表示‘部分-整体’的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。
涉及角色:
1.Component 是组合中的对象声明接口,在适当的情况下,实现所有类共有接口的默认行为。声明一个接口用于访问和管理Component
子部件。
2.Leaf 在组合中表示叶子结点对象,叶子结点没有子结点。
3.Composite 定义有枝节点行为,用来存储子部件,在Component接口中实现与子部件有关操作,如增加(add)和删除
(remove)等。
适用性
以下情况下适用Composite模式:
1.你想表示对象的部分-整体层次结构
2.你希望用户忽略组合对象与单个对象的不同,用户将统一地使用组合结构中的所有对象。
总结
组合模式解耦了客户程序与复杂元素内部结构,从而使客户程序可以向处理简单元素一样来处理复杂元素。
如果你想要创建层次结构,并可以在其中以相同的方式对待所有元素,那么组合模式就是最理想的选择。本章使用了一个文件
系统的例子来举例说明了组合模式的用途。在这个例子中,文件和目录都执行相同的接口,这是组合模式的关键。通过执行相
同的接口,你就可以用相同的方式对待文件和目录,从而实现将文件或者目录储存为目录的子级元素
组合模式类图
组合模式结构图
[b]详细代码请参考我的git:https://github.com/wzyxidian/DesignModel.git[/b]
涉及角色:
1.Component 是组合中的对象声明接口,在适当的情况下,实现所有类共有接口的默认行为。声明一个接口用于访问和管理Component
子部件。
2.Leaf 在组合中表示叶子结点对象,叶子结点没有子结点。
3.Composite 定义有枝节点行为,用来存储子部件,在Component接口中实现与子部件有关操作,如增加(add)和删除
(remove)等。
适用性
以下情况下适用Composite模式:
1.你想表示对象的部分-整体层次结构
2.你希望用户忽略组合对象与单个对象的不同,用户将统一地使用组合结构中的所有对象。
总结
组合模式解耦了客户程序与复杂元素内部结构,从而使客户程序可以向处理简单元素一样来处理复杂元素。
如果你想要创建层次结构,并可以在其中以相同的方式对待所有元素,那么组合模式就是最理想的选择。本章使用了一个文件
系统的例子来举例说明了组合模式的用途。在这个例子中,文件和目录都执行相同的接口,这是组合模式的关键。通过执行相
同的接口,你就可以用相同的方式对待文件和目录,从而实现将文件或者目录储存为目录的子级元素
组合模式类图
组合模式结构图
[b]详细代码请参考我的git:https://github.com/wzyxidian/DesignModel.git[/b]
相关文章推荐
- Linux(Ubuntu)下如何安装JDK
- Flex 四种方式设置dataGrid表头颜色
- viewPagerFragment的子fragment的onActivityResult()无法执行调用问题解决方案
- 《Python入门》第一个Python Web程序——简单的Web服务器
- 网页制作过程中div定位的三个问题
- linux下解压 tar.bz2
- js与PHP参数问题
- CentOs中的Mysql配置
- Nginx的启动、停止与重启
- ArcGIS Runtime Quartz版本架构深度解析
- Linux tcpdump命令具体解释
- 【Linux学习笔记】Linux-CentOS下安装Redis
- Dr.COM宽带认证客户端在32位系统运行
- iOS开发之网络请求(基于AFNetworking的再封装)
- freemaker 页面无法显示spring mvc 传递的对象属性
- APP(iOS)测试流程
- GitHub 使用(Win7 下Git Bash)
- Helmholtz Machine and Wake-Sleep Learning
- 2015年书单
- 2015年书单