定义 将对象组合成树形结构以表示“部分 - 整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性
类图
通用代码
优点
1. 高层模块调用简单 高层模块不必关心自己处理的是单个对象还是整个组合结构
2. 节点自由增加
缺点
场景类中,树枝和树叶使用时都需用起实现类,与依赖倒置原则冲突,没有面向接口编程
使用场景
1. 维护和展示部分 - 整体关系的场景,如树形菜单,文件和文件夹管理
2. 从一个整体中能够独立出部分模块或功能的场景
只要是树形结构就可以考虑使用组合模式