组合模式及代理模式

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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 {

Listfilelist=new ArrayList();

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();

}

}

相关文档
最新文档