实验10:组合模式
本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:
1、理解组合模式的动机,掌握该模式的结构;
2、能够利用组合模式解决实际问题。
[实验任务一]:组合模式
用透明组合模式实现教材中的“文件夹浏览”这个例子。
实验要求:
-
文件的执行不需真正实现,只需简单提示即可;
-
提交源代码;
package touming;// 抽象文件类
public abstract class AbstractFile {protected String fileName;public AbstractFile(String fileName) {this.fileName = fileName;}public abstract void add(AbstractFile element);public abstract void remove(AbstractFile element);public abstract void display();
}package touming;// 客户端测试代码
public class Client {public static void main(String[] args) {// 创建根文件夹Folder rootFolder = new Folder("根文件夹");// 创建子文件夹Folder subFolder = new Folder("子文件夹");// 创建文件AbstractFile image = new ImageFile("图片.jpg");AbstractFile text = new TextFile("文档.txt");AbstractFile video = new VideoFile("视频.mp4");// 组织结构rootFolder.add(subFolder);rootFolder.add(image);subFolder.add(text);subFolder.add(video);// 显示文件夹结构rootFolder.display();}
}package touming;// 视频文件类
public class VideoFile extends AbstractFile {public VideoFile(String fileName) {super(fileName);}@Overridepublic void add(AbstractFile element) {System.out.println("不支持该方法");}@Overridepublic void remove(AbstractFile element) {System.out.println("不支持该方法");}@Overridepublic void display() {System.out.println("播放视频文件: " + fileName);}
}package touming;// 文本文件类
public class TextFile extends AbstractFile {public TextFile(String fileName) {super(fileName);}@Overridepublic void add(AbstractFile element) {System.out.println("不支持该方法");}@Overridepublic void remove(AbstractFile element) {System.out.println("不支持该方法");}@Overridepublic void display() {System.out.println("显示文本文件: " + fileName);}
}
package touming;
// 文件夹类
import java.util.ArrayList;
import java.util.List;public class Folder extends AbstractFile {private List<AbstractFile> fileList = new ArrayList<>();public Folder(String fileName) {super(fileName);}@Overridepublic void add(AbstractFile element) {fileList.add(element);}@Overridepublic void remove(AbstractFile element) {fileList.remove(element);}@Overridepublic void display() {System.out.println("Folder: " + fileName);for (AbstractFile file : fileList) {file.display();}}
}
package touming;// 图像文件类
public class ImageFile extends AbstractFile {public ImageFile(String fileName) {super(fileName);}@Overridepublic void add(AbstractFile element) {System.out.println("不支持该方法");}@Overridepublic void remove(AbstractFile element) {System.out.println("不支持该方法");}@Overridepublic void display() {System.out.println("显示图像文件: " + fileName);}
}
3.注意编程规范。