设计模式之组合模式
将对象组合成树结构以表示部分整体层次结构。当使用树结构的上层和下层组件属性可能差别很大,所以说一般情况下需要对这两类对象进行分别处理, 但Composite允许客户端统一处理单个对象和对象组合。也就是说可以将叶子组件与整体进行一致性处理,实现的方法是组件和整体实现相同接口。
应用场景
- 想要表示对象的部分与整体之间的层次结构
- 想要客户端忽略组合对象和单个对象的区别,使用组合模式会统一处理最后的组合对象。
组合模式结构
最典型的情况就是多级树形菜单和文件夹结构。盗个图 - -
上图,虽然国家,地区,城市属于不同的层级,但是都需要继承同一个接口,是客户端能够统一的调用不同层级的对象。类似多级树形菜单的结构。
代码
第一部分:抽象组件
1 | // 这个抽象组件即完成了抽象组件的功能,又完成了“树枝”的功能,能够链接各个叶子节点 |
第二部分:树叶构件
1 | // 国家级别树叶节点 |
第三部分:客户端
1 | public class App { |
1 | 当前组件:china 等级:0 |