设计模式-10-组合模式
来源:互联网 发布:mysql garela 编辑:程序博客网 时间:2024/05/16 05:37
组合模式:又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分及整体的层次。
package com.structuralPattern.group.edition1;public abstract class File { String name; public File(String name){ this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } public abstract void display();}
package com.structuralPattern.group.edition1;import java.util.ArrayList;import java.util.List;public class Folder extends File{ private List<File> files; public Folder(String name){ super(name); files = new ArrayList<File>(); } /** * 浏览文件夹中的文件 */ public void display() { for(File file : files){ file.display(); } } /** * @desc 向文件夹中添加文件 * @param file * @return void */ public void add(File file){ files.add(file); } /** * @desc 从文件夹中删除文件 * @param file * @return void */ public void remove(File file){ files.remove(file); }}
package com.structuralPattern.group.edition1;public class TextFile extends File{ public TextFile(String name) { super(name); } public void display() { System.out.println("这是文本文件,文件名:" + super.getName()); } }
package com.structuralPattern.group.edition1;public class ImagerFile extends File{ public ImagerFile(String name) { super(name); } public void display() { System.out.println("这是图像文件,文件名:" + super.getName()); }}
package com.structuralPattern.group.edition1;public class VideoFile extends File{ public VideoFile(String name) { super(name); } public void display() { System.out.println("这是影像文件,文件名:" + super.getName()); }}
package com.structuralPattern.group.edition1;public class Client { public static void main(String[] args) { /** * 我们先建立一个这样的文件系统 * 总文件 * * a.txt b.jpg c文件夹 * c_1.text c_1.rmvb c_1.jpg * */ //总文件夹 Folder zwjj = new Folder("总文件夹"); //向总文件夹中放入三个文件:1.txt、2.jpg、1文件夹 TextFile aText= new TextFile("a.txt"); ImagerFile bImager = new ImagerFile("b.jpg"); Folder cFolder = new Folder("C文件夹"); zwjj.add(aText); zwjj.add(bImager); zwjj.add(cFolder); //向C文件夹中添加文件:c_1.txt、c_1.rmvb、c_1.jpg TextFile cText = new TextFile("c_1.txt"); ImagerFile cImage = new ImagerFile("c_1.jpg"); VideoFile cVideo = new VideoFile("c_1.rmvb"); cFolder.add(cText); cFolder.add(cImage); cFolder.add(cVideo); //遍历C文件夹 cFolder.display(); //将c_1.txt删除 cFolder.remove(cText); System.out.println("-----------------------"); cFolder.display(); }}
阅读全文
0 0
- 设计模式(10)-组合模式
- 设计模式-10-组合模式
- 设计模式:组合模式
- 设计模式-----组合模式
- 设计模式 组合模式
- 设计模式--组合模式
- 设计模式---组合模式
- 【设计模式】组合模式
- 设计模式 - 组合模式
- 设计模式----组合模式
- 设计模式 - 组合模式
- 设计模式:组合模式
- 设计模式 - 组合模式
- 设计模式-组合模式
- 设计模式 - 组合模式
- 【设计模式】组合模式
- 设计模式--组合模式
- 设计模式-组合模式
- 《软件测试的艺术》
- 198. House Robber
- python计算直角三角形顶点坐标
- django 内置的模板过滤器
- 《探索性测试实践之路》
- 设计模式-10-组合模式
- android studio jni cmake(2)已有项目上增加jni
- 建造者模式
- 《探索性测试》
- Linux 网络编程——并发服务器的三种实现模型
- 复用与继承/静态工厂与构造器
- JavaScript arguments对象
- redis 内存淘汰机制
- oracle---sqlplus搜索结果输出到文件