【设计模式】组合模式
组合模式
组合模式:将对象组合成树形结构以表示‘部分-整体’的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。
简单说,组合模式对应的情况是有一个总部,总部下有各个职能部门,也有组织架构类似于总部的分部(其下也有职能部门和分分部)。
如果说总部下只有职能部门,没有分部。这种情况那就不需要设计模式了,直接组合即可。
看完代码后,发现Leaf类里有用不到的Add和Remove。好处在于让职能部门(Leaf对象)与分部(Composite对象)具备完全一致的行为接口。
如果不想要 用不到的Add和Remove 这部分,就在Component中不去声明,之后再Composite来声明即可,但这样会让客户端需要判断,相对变得不方便。
组合模式可以让客户一致的使用组合结构和单个对象。
当你发现需求中是体现部分与整体层次的结构时,以及你希望用户可以忽略组合对象与单个对象的不同,统一地使用组合结构中的所有对象时,就应该考虑用组合模式了。