组合模式——composite
来源:互联网 发布:淘宝闲鱼拍卖可信吗 编辑:程序博客网 时间:2024/05/23 17:38
组合模式的使用场景:
——把部分与整体的关系用树形结构来表示,从而使客户端可以使用统一的方式处理部分对象和整体对象。
组合模式的核心:
——抽象构件(Component)角色:定义了叶子和容器构件的共同点。
——叶子构件角色:无子节点
——容器(Composite)构件角色:有容器特征,可以包含子节点。
下面以杀毒的流程来模拟一下组合模式的实现:
package composite;import java.util.ArrayList;import java.util.List;/** * 简单模拟杀毒软件的杀毒构架 * @author acer *///抽象构件角色public interface AbstractFile {public void killVirus();}//叶子构建class ImageFile implements AbstractFile{private String name;public ImageFile(String s) {this.name = s;}@Overridepublic void killVirus() {System.out.println("对图像文件"+name+"进行查杀");}}//叶子构建class TextFile implements AbstractFile{private String name;public TextFile(String s) {this.name = s;}@Overridepublic void killVirus() {System.out.println("对文本文件"+name+"进行查杀");}}//叶子构建class VideoFile implements AbstractFile{private String name;public VideoFile(String s) {this.name = s;}@Overridepublic void killVirus() {System.out.println("对视频文件"+name+"进行查杀");}}//容器构件角色class Folder implements AbstractFile{private String name;//定义容器,用来存放本容器构建下的子节点private List<AbstractFile> list = new ArrayList<AbstractFile>();public Folder(String name) {this.name = name;}public void add(AbstractFile file) {list.add(file);}public void remove(AbstractFile file){list.remove(file);}public AbstractFile getChild(int index){return list.get(index);}@Overridepublic void killVirus() {System.out.println("对文件夹"+name+"进行查杀");for(AbstractFile file : list) {//这里会形成一个递归,如果文件是一个文件夹,将不断的进行递归 file.killVirus();}}}
测试:
package composite;public class Client {public static void main(String[] args) {AbstractFile f2,f3,f4;Folder f1 = new Folder("我的文件夹");f2 = new ImageFile("feige.img");f3 = new TextFile("demo.txt");f1.add(f2);f1.add(f3);f1.killVirus();}}
这样就实现了组合模式。组合模式的应用场景很多:如资源管理器 xml文件解析 JUnit单元测试。
0 0
- 组合模式——Composite
- Composite——组合模式
- 组合模式——composite
- 【设计模式】—— 组合模式Composite
- Java设计模式 —— 组合(Composite)
- 组合模式(Composite)——Java
- 设计模式(13)——Composite 组合模式
- java设计模式11——组合模式(Composite)
- 设计模式——组合模式(Composite Pattern)
- Android与设计模式——组合(Composite)模式
- 设计模式(8)——Composite(组合)模式
- 设计模式(10)——组合模式(Composite Pattern)
- C++设计模式——Composite 组合模式
- (结构型模式)COMPOSITE——组合模式
- 设计模式 —— 组合模式(Composite Pattern)
- java设计模式——组合模式(Composite Pattern)
- Java设计模式——组合模式(Composite Pattern)
- 设计模式学习笔记——组合(Composite)模式
- hibernate+struts2 订餐项目
- ajax上传form表单(type='file')FormData
- Codeforces 767D 贪心
- EasyPusher实现将asterisk直播流以RTSP转发实现通话直播与录像
- c++ 学习心得(一)
- 组合模式——composite
- linux基础命令之文件权限的管理及ACL的扩展
- java system library
- Python -- 2. 列表
- HDU2612-Find a way
- 你真的懂KPI和OKR么?(附:为何谷歌、英特尔、知乎均放弃KPI,转向OKR?)
- Apache mod_wsgi模块简介
- Lua初学——字符串
- mysql安装升级