/*
* 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来实现统一迭代接口
*
*/