组合模式及代理模式
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
三、实验内容及要求
实验内容(一):
使用组合设计模式设计一个杀毒软件(AntyVirus)的框架,该软件既可以对某个文件夹(Folder)杀毒,也可以对某个指定的文件(File)进行杀毒,文件种类包括文本文件(TextFile),图片文件(ImageFile),视频文件(VideoFile)。绘制类图并编程实现。
实验内容(二):
应用软件所提供的桌面快捷方式是快速启动应用程序的代理,桌面快捷方式一般使用一张小图片(Picture)来表示,通过调用快捷方式的run方法将调用应用软件(Application)的run方法。使用代理模式模拟该过程,绘制类图并编程实现。
四、实验记录(按教师需求写出相应的实验步骤、流程图、程序代码、运行结
果及分析等项目)
抽象文件
publicabstractclass AbstractFile {
protected String fileName;
publicabstractvoid addFile(AbstractFile file);
publicabstractvoid removeFile(AbstractFile file);
publicabstractvoid killVirus();
publicvoid setFileName(String fileName){
this.fileName=fileName;
}
}
具体文件
publicclass File extends AbstractFile {
publicvoid killVirus() {
System.out.println("对"+this.fileName+"进行扫描");
}
}
具体文件夹
publicclass Folder extends AbstractFile {
List
publicvoid addFile(AbstractFile file) {
filelist.add(file);
}
publicvoid removeFile(AbstractFile file) {
filelist.remove(file);
}
publicvoid killVirus() {
System.out.println("对文件夹"+this.fileName+"进行扫描");
for(AbstractFile file:filelist){
file.killVirus();
}
}
}
client类
publicclass Client {
publicstaticvoid main(String[] args) {
AbstractFile text=new TextFile();
AbstractFile image=new ImageFile();
AbstractFile video=new VideoFile();
AbstractFile folder1=new Folder();
AbstractFile folder2=new Folder();
text.setFileName("text");
image.setFileName("image");
video.setFileName("video");
folder1.setFileName("folder1");
folder2.setFileName("folder2");
folder1.addFile(image);
folder1.addFile(text);
folder2.addFile(video);
folder2.addFile(folder1);
folder2.killVirus();
}
}
publicclass Application implements Subject {
publicvoid run() {
System.out.println("Application is openning");
}
}
publicclass PictureProxy implements Subject {
Application application=new Application();
publicvoid run() {
System.out.println("PictureProxy is called");
application.run();
}
}
publicclass Client {
publicstaticvoid main(String[] args) {
Subject subject=new PictureProxy();
subject.run();
}
}