软考-设计模式-组合Composite模式


Composite模式的意图是“将对象组合成树形结构表示‘整体-部分’的层次结构。
Composite使得用户对单个对象和组合对象的使用更具有一致性”。


在Word中我们经常会将一些图元进行“组合”,组合以后的图形还可以向简单图元那样进行移动、变形等等操作;
除此以外,在Word中,我们对于一个字符、一个词组、一句话、一个段落,甚至是整篇文章的操作是相同的,
我们都可以进行剪切、复制,进行字体与大小的调整,进行颜色的变换。这些例子都是Composite模式的实例,
我们将简单的元素组合成复杂的元素,然后还可以像操作简单元素那样操作组合元素。


“组合模式方便于处理递归以及分级数据结构。例如:计算机的文件系统,文件系统由目录和文件组成。目录之中可以是目录,也可以是文件。
因而,计算机的文件系统由递归结构组织而成。如果想编程表示这一数据结构,就可以使用组合模式。”
组合模式有三种元素:元素接口、叶子元素(即文件)、组合元素(即目录)。叶子和组合都实现同一个接口,例如 ↓↓
以上只是举个例子,请根据实际情况考虑。之所以让叶子和组合实现相同的接口是因为这样可以以相同的方式对待所有的元素。
例如我们平时所用到的移动文件,复制文件什么的,这些操作对于叶子(文件)还是组合(文件夹)都是相同的,
只要保证了它们的接口相同,就可以相同的对待。而不同的有例如组合(文件夹)可以加减 item,而叶子(文件)不可以等。
这些可以通过它们接口方法的各自实现不同来做到,像上述接口中的 addItem(),
在组合里就是加 item 的相关操作,而在叶子里就是空的,来实现叶子不能加 item 的效果


参考:星际里面的选地图:>>>>


详细代码:>>>


透明模式和安全模式 >>>>

可以打印出如下目录
目录 C:
-文件: 小说.txt
-目录 动作片
–文件: 苍老师.avi
–目录 爱情动作片
—文件: 苍老师大战automan.avi
-目录 空目录1 
–空目录11 该目录没有东西 
–空目录12 该目录没有东西 
–空目录13 该目录没有东西 
-空目录2 该目录没有东西 
-空目录3 该目录没有东西 
-文件: 小说2.txt