本次实验属于模仿型实验,通过本次实验学生将掌握以下内容: 1、理解组合模式的动机,掌握该模式的结构; 2、能够利用组合模式解决实际问题。 [实验任务一]:组合模式 用透明组合模式实现教材中的“文件夹浏览”这个例子。 实验要求: 1. 文件的执行不需真正实现,只需简单提示即可; 2. 提交源代码; public abstract class AbstractFile { public abstract void add(AbstractFile element); public abstract void remove(AbstractFile element); public abstract void display(); } import java.util.ArrayList; public class Folder extends AbstractFile { private ArrayList<AbstractFile> fileList = new ArrayList<>(); private String fileName; public Folder(String fileName) { this.fileName = fileName; } /** * 添加文件 */ @Override public void add(AbstractFile element) { fileList.add(element); // 获取类的简单名称 String elementName = element.getClass().getSimpleName(); //输出提示信息 System.out.println(fileName + "添加了一个" + elementName); } /** * 删除文件 */ @Override public void remove(AbstractFile element) { fileList.remove(element); // 获取类的简单名称 String elementName = element.getClass().getSimpleName(); //输出提示信息 System.out.println(fileName + "删除了一个" + elementName); } /** * 递归打印文件夹里的内容 */ @Override public void display() { System.out.println(fileName); System.out.println("-------" + fileName + "包括-------"); for (AbstractFile object : fileList) { object.display(); } } } public class ImageFile extends AbstractFile { private String fileName; public ImageFile(String fileName) { this.fileName = fileName; } @Override public void add(AbstractFile element) { System.out.println("add ImageFile"); } @Override public void remove(AbstractFile element) { System.out.println("remove ImageFile"); } @Override public void display() { System.out.print(fileName); System.out.println(" ImageFile"); } } public class TextFile extends AbstractFile { private String fileName; public TextFile(String fileName) { this.fileName = fileName; } @Override public void add(AbstractFile element) { System.out.println("add TextFile"); } @Override public void remove(AbstractFile element) { System.out.println("remove TextFile"); } @Override public void display() { System.out.print(fileName); System.out.println(" TextFile"); } } public class VideoFile extends AbstractFile { private String fileName; public VideoFile(String fileName) { this.fileName = fileName; } @Override public void add(AbstractFile element) { System.out.println("add VideoFile"); } @Override public void remove(AbstractFile element) { System.out.println("remove VideoFile"); } @Override public void display() { System.out.print(fileName); System.out.println(" VideoFile"); } } 3.注意编程规范。
标签:10,组合,void,AbstractFile,System,11.10,fileName,public,out From: https://www.cnblogs.com/kongxiangzeng/p/18658694