类图
代码
Component
1 | abstract class Component{ |
Leaf
1 | class File extends Component{ |
Composite
1 | class Folder extends Component{ |
测试类
1 | public class Main { |
运行结果
1 | 文件夹:文件夹1 |
总结
概述
组合模式相当于树,表明了一种整体与部分的层次结构,如例子中的系统中的文件和文件夹的体系就是组合模式的一种
优点
清晰的进行层次划分,增加新构件比较容易
对客户端透明,客户端可以进行统一调用
可以忽略整体与部分的差异性,统一处理
缺点
使设计变的更加抽象,对象的业务规则如果很复杂,实现组合模式具有很大的挑战性,不过这也不能明确算是组合模式的一个缺点,大多设计模式都有此特点