组合模式(Composite Pattern)

    组合模式:将对象组合成树形结构以表示’部分-整体’的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。

    当你发现需求中是体现部分与整体层次的结构时,以及你希望用户可以忽略组合对象与单个对象的不同,统一地使用组合结构中的所有对象时,就应该考虑使用组合模式了。

    具体公司类 实现接口树枝节点

    人力资源部与财务部类 树叶节点

    客户端调用

    透明方式与安全方式

    透明方式,也就是说在Component中声明所有用来管理子对象的方法,其中包括Add,Remove等。这样实现Component接口的所有子类都具备了Add和RFemove。这样做的好处就是叶节点和枝节点对于外界没有区别,它们具备完全一致的行为接口。但是问题也很明显,因为Leaf类本身不具备Add(),Remove()方法的功能,所以实现也是没意义的。

    组合模式有时候又叫做部分-整体模式,它使我们树型结构的问题中,模糊了简单元素和复杂元素的概念,客户程序可以向处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素的内部结构解耦。