设计模式之组合模式
来源:互联网 发布:数据挖掘 答案 韩家炜 编辑:程序博客网 时间:2024/05/29 10:58
设计模式之组合模式
组合模式的简单介绍
组合模式(composite),是一种比较常用的设计模式,这里需要区分组合模型与组合模式的区别,组合模型是指对象之间的依赖关系(还有继承等),组合模式使用于层级结构的模型之中(比如树,具体的可以有文件系统的管理,管理文件、目录等),基本思想是:将部分和整体用树形结构表示出来,客户端在处理的时候可以使用统一的方式进行处理而不需要详细区分不同部分的区别。在使用的过程中,通常包含两个构件:叶子构件以及容器构件。
组合模式的具体实现
接下来,通过模拟一个文件系统的管理,管理文件以及目录来实现组合模式,加深对组合模式的理解
/** * 抽象构件 */abstract class Component { private String name; public Component(String name) { this.name = name; } public String getName() { return name; } public abstract void scan();}/** * 叶子构件,这里为了方便直接定义为叶子构件 * 实际上应该使用具体的类型,比如文件构件 * MP3构件、图片构件等 */class LeafComponent extends Component{ public LeafComponent(String name) { super(name); } @Override public void scan() { System.out.printf("File: %s\n", getName()); }}/** * 容器构件,同上 */class ContainerComponent extends Component{ private List<Component> childs = new ArrayList<>(); public ContainerComponent(String name) { super(name); } public void add(Component c){ childs.add(c); } @Override public void scan() { System.out.printf("Dir: %s\n", getName()); for (Component c : childs){ c.scan(); } }}
从上面可以看到,将目录以及文件定义成构件之后,在进行一些通用性的操作,比如访问、删除等的时候,就非常方便,而不需要区分是文件类型还是目录了
总结
组合模式以一种统一的方式来管理对象,将不同的对象按照基本相同的方式进行组织,这种方式尤其适用于具有树形结构的对象,比如XML、HTML、文件管理等,通过统一的接口可以直接操作整体的对象,而不再需要区分对象之间的具体差异
阅读全文
0 0
- 设计模式之组合模式
- 设计模式之组合模式
- 设计模式之组合模式
- 设计模式之--组合模式
- 设计模式之组合模式
- 设计模式之组合模式
- 设计模式之组合模式
- 设计模式之组合模式
- 设计模式之---组合模式
- 设计模式之组合模式
- 设计模式之组合模式
- 设计模式之-------------组合模式
- 设计模式之组合模式
- 设计模式之组合模式
- 设计模式之组合模式
- 设计模式 之 组合模式
- 设计模式之组合模式
- 设计模式之组合模式
- MyBatis数据源DataSource分类
- 如何正确地写出单例模式
- 单链表合并排序
- 《利用python进行数据分析》学习笔记(六)
- javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint-实体报错
- 设计模式之组合模式
- QML中sql语句的实现
- 动态加载JS脚本
- 51 Nod 1130 N的阶乘的长度 V2(斯特林近似)
- rabbimq 集群部署说明
- 剑指Offer笔记—— 从尾到头打印链表 重建二叉树
- vuejs的v-for遍历、v-bind动态改变值、v-if进行判断
- 我的广告
- 让exe文件开机自启动