/*
* Composite Pattern(组合模式)
* 在程序里面,经常需要对树形结构(如菜单,文件等都是树形结构)进行访问,composite Pattern就是对为了实现对树型结构提供一致的访问接口
* 定义:
* allow you to composite objects into tree structures to represent part-whole hierachies.composite
* lets client treat individual objects and composition of object uniformly;
*
* 下面是一个模拟文件树型结构的composite Pattern的应用
* 首先抽象类是FileComponent,File文件叶子类和FileFolder文件夹类继承于FileComponent
* FileComponent提供基本的抽象接口,对于继承类来说,如果没有实现该接口,会自动抛出异常UnDefineException
*
*
*
* 另外,对于Iterator可以与Composite结合起来使用,其中一个例子结构如下:
* -FileRoot
* --file1
* --Folder1
* -- file2
* -- Folder11(Folder11是所使用的容器是Vector)
* -file3
* -file4
* -- Folder12(Folder12所使用的容器是Array)
* -file5
* -file6
* 这是就需要对Folder11,Folder12使用Iterator模式提供统一接口Iterator
* 这样就可以继续对其一致的访问接口(具体参照Iterator模式)
*
* 可以看出,Iterator 是对于“水平”结构提供一致访问内部访问接口,而Composite是对于结构本身的访问,相对于Iterator来说的类内部
* 构造结构来说是有所不同的,
* 如上面的例子来说,对于Composite模式来说,只关心对整个树结构提供一致接口功能,而不关心是如何迭代(Iterator)出来的,而对于
* 具体一个Folder来说,就需要关心Iterator了,因为具体的内部怎么构造容器,不同的容器就需要构造不同的Iterator来实现统一迭代接口
*
*/
本文介绍组合模式(Composite Pattern)的基本概念及其在模拟文件系统树形结构中的应用。通过具体实现展示了如何利用组合模式为树状结构提供统一的操作接口,并结合迭代器模式(Iterator Pattern)实现对复合对象树的一致访问。

1402

被折叠的 条评论
为什么被折叠?



