Composite Pattern(组合模式)

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

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值