java设计模式-组合模式
来源:互联网 发布:java入门到精通4 pdf 编辑:程序博客网 时间:2024/06/05 06:45
应用场景:
组合模式就是专门用来处理树形结构的数据,如下图的结构
实现的结构可以如下:
举个例子说说明实现,这里我们使用查找文件系统的实例:
首先是基础接口
/** * 文件接口 * @author liuxg * @date 2016年5月25日 下午8:21:54 */public interface IFile { boolean searchFile(String fileName);}
定义叶子节点接口继承于IFile,还有其实现类
public interface File extends IFile{}class ImageFile implements File{ private String fileName ; public ImageFile(String fileName) { this.fileName = fileName ; } @Override public boolean searchFile(String searchFileName) { System.out.println("查找图片名称为" + fileName); if (fileName.equals(searchFileName)) { return true ; } return false; }}class TxtFile implements File{ private String fileName ; public TxtFile(String fileName) { this.fileName = fileName ; } @Override public boolean searchFile(String searchFileName) { System.out.println("查找文本文件名称为" + fileName); if (fileName.equals(searchFileName)) { System.out.println("已经查找到文件为:" + fileName); return true ; } return false; }}class VideoFile implements File{ private String fileName ; public VideoFile(String fileName) { this.fileName = fileName ; } @Override public boolean searchFile(String searchFileName) { System.out.println("查找视频文件名称为" + fileName); if (fileName.equals(searchFileName)) { System.out.println("已经查找到文件为:" + fileName); return true ; } return false; }}
再定义父节点接口还有实现类
/** * 文件夹 * @author liuxg * @date 2016年5月25日 下午8:27:19 */public interface IFolder extends IFile{ File addFile(File file); void removeFile(File file); List<File> findChildren();}class Folder implements IFolder{ private List<File> files = new ArrayList<File>(); @Override public boolean searchFile(String fileName) { boolean b = false ; for (File file : files) { b = file.searchFile(fileName); } return b; } @Override public File addFile(File file) { files.add(file); return file; } @Override public void removeFile(File file) { files.remove(file); } @Override public List<File> findChildren() { return files; }}
最后我们客户端使用测试
public class Client01 { public static void main(String[] args) { File f1 = new ImageFile("我的图片文件"); File f2 = new TxtFile("我的文本文件"); File f3 = new VideoFile("我的视频文件"); IFolder folder = new Folder(); folder.addFile(f1); folder.addFile(f2); folder.addFile(f3); folder.searchFile("我的视频文件"); }}
组合模式具有天然的递归调用,我们可以用俩个类就处理递归调用,是不是很简单
0 0
- JAVA设计模式 -- 组合模式
- JAVA设计模式:组合模式
- Java 设计模式-组合模式
- java设计模式-组合模式
- Java设计模式--组合模式
- Java设计模式--组合模式
- Java设计模式----组合模式
- JAVA设计模式(组合模式)
- JAVA设计模式--组合模式
- java设计模式--组合模式
- java设计模式--组合模式
- JAVA 设计模式 组合模式
- java设计模式---组合
- java设计模式--组合
- Java组合设计模式
- 设计模式--结构模式--组合模式--Java
- java设计模式之组合设计模式
- Java设计模式(6) -- 组合
- Java 实现导出excel表 POI
- 语义化标签
- 树-Path Sum II(指定和,求根到叶子的路径)
- leetcode笔记—生成最大的 数组Create Maximum Number
- 函数式编程
- java设计模式-组合模式
- Android Home按键的监听与屏蔽方式
- 提交表单用ajax判断登录正确并跳转页面的方法
- POJ 3268Silver Cow Party (迪杰斯特拉)
- 2016.5.25笔记
- C++作业6
- Python3 迭代器与生成器
- HDU 5444 Elven Postman
- 文章标题