学习组合模式,转载一段有关组合模式的详解
来源:互联网 发布:sql导入access 编辑:程序博客网 时间:2024/05/14 11:23
很多书中包括文章都喜欢使用公司、子公司以及部门的例子,这其实就是一个典型的树结构。其实生活当中的树结构还有很多,比如书的目录、文件系统、网站的菜单等等,有很多很多。
我们先来看看组合模式的类图,引自百度百科。
类图当中有三个类,一个是Component(节点的统一接口),它的目的是为了统一节点的操作。接下来的两个实现类,一个则是非叶子节点(Composite),它可以有子节点。另外一个则是叶子节点(Leaf),它不能含有子节点。
我们随便挑一个树结构的例子,比如文件系统,我们来分析一下,在文件系统中,如果使用组合模式,各个部分的类都应该是什么样子的。
首先,文件系统中,叶子节点是文件,非叶子节点是文件夹,所以Leaf和Composite实现类就是文件和文件夹。对于Component接口,其实也很简单,就是提取文件和文件夹的共性就可以了。
很显然,二者的共性有很多,比如都可以进行复制、剪切、删除、重命名等操作。但是不同的是,对于文件和文件夹的这些操作是有细微的区别的,最明显的就是删除操作,如果是文件,那么我们只需要删除当前文件即可,而如果是文件夹,则需要删除文件夹下的所有文件以及文件夹,然后再删除该文件夹。
那么定义当中的一致性就体现在,我们的客户端不需要知道当前操作的是文件还是文件夹,它只知道它要进行删除操作,而我们去针对文件类别的不同去进行相应的处理。
下面我们来模拟一下组合模式,采用文件系统。
首先,我们先给出一个接口,它相当于Component接口,定义了文件与文件夹的公共行为。
- 学习组合模式,转载一段有关组合模式的详解
- 组合模式的详解
- java 组合模式 详解
- 组合模式 详解
- 组合模式(Composite)学习
- 组合模式学习笔记
- 设计模式学习--组合
- 设计模式学习-----组合模式
- 设计模式学习--组合模式
- 设计模式学习--组合模式
- 设计模式学习-组合模式
- 模式的组合
- 组合模式的应用
- 组合模式的精髓
- 组合模式的优点
- 不错的 组合模式
- 组合模式的实例
- (十九)组合模式详解
- Solr 开发入门
- 从现在开始写博客
- Android中使用ListView实现自适应表格
- VC中TRACE()的用法
- Hibernate的10个常见面试问题及答案
- 学习组合模式,转载一段有关组合模式的详解
- 信号量、互斥体和自旋锁
- C++中的容器类详解 ----写得很详细
- Linux curl使用简单介绍
- 我编了一个0.1盖茨的程序
- NET单例模式几种写法
- HDU--1213 -- How Many Tables [水水的并查集]
- Apache POI如何获取Excel合并单元格的值
- How to "Build" a Computer