1.组合模式
组合模式(Compsite Pattern)是23 中设计模式之一。组合模式属于结构型模式,是一种“部分”--“整体”关系模型,优先用于一致性的“部分”--“整体”关系。
2.组合模式的原理与实现方式
组合模式的原理是:对外提供一个通用的接口,可以添加和减少成员,从而组成整体。
组合模式优先考虑的“部分”--“整体”方式是树形结构,因为树是一种有序的模型,可以清晰得表示出部分整体的关系【我在《由图与数的关系说起——兼谈XML语言的好处》(https://blog.csdn.net/wangzhezhilu001/article/details/51979372),对该观点明确表述过】。
组合模式的实现方法是:
1)对外提供一个统一的接口,该接口可以让根节点进行使用;
2)提供枝干接口和叶结点接口(枝干接口和叶结点接口应该继承于统一接口);
3)组合模式的实现,一般有两种:透明型和安全型。
4)透明型组合模式由对外接口统一,枝干接口和叶结点接口继承功能;但在透明型组合模式中,叶结点不提供添加和删除功能支持。
5)安全型组合模式中,对外统一接口只提供一个展示功能 ,只有枝干接口(或者说组合接口),实现了部分的添加和删除;叶子结点接口不提供部分的添加和删除功能。
3.组合模式的优缺点
组合模式的优缺点:
1)组合模式的优点在于对外一致处理实体和实体容器,并让整体和部分关系解耦;
2)组合模式的缺点在于:设计会更复杂,会让程序更不容易理解。
4.组合模式的代码实现
安全型组合模式实现:
https://github.com/diziqian/DesignPattern/tree/master/CompositePattern/SafeCompositePattern
透明型组合模式实现:
https://github.com/diziqian/DesignPattern/tree/master/CompositePattern/TransparentCompositePattern
透明型组合模式实现: