组合模式(Composite Pattern),又叫部分整体模式,它创建了对象组的树形结构,将对象组合成树状结构以表示"整体-部分"的层次关系
组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式
优点
高层模块调用简单
节点自由增加
缺点
在使用组合模式时,其叶子和树枝的声明都是实现类,而不是接口,违反了依赖倒置原则
UML 图解
组合模式的角色及职责:
Component:这是组合中对象声明接口,在适当情况下,实现所有类共有的接口默认行为,用于访问和管理 Component 子部件,Component 可以是抽象类或者接口
Composite:非叶子节点,用于存储子部件,在 Component 接口中实现子部件的相关操作,比如增加(add),删除等
Leaf:在组合中表示叶子节点,叶子节点没有子节点(它是被管理者)
案例
这种模式使用的案例还是蛮多的,例如树形菜单的遍历、公司组织架构、文件和文件夹等等。下面就以公司的组织架构为例编写对应代码
客户端部分
核心代码
以上就是组合模式的玩法,古人说书上得来终觉浅,绝知此事要躬行,所以如果你在看完代码还是无法理解的话,那我建议你动手写一遍。
结语
这个设计模式其实不复杂,我在做的时候有好几次都卡壳了,所以最好还是动手写一遍。最后放一张运行效果图
领取专属 10元无门槛券
私享最新 技术干货