您好,欢迎访问三七文档
高级语言程序设计实验指导书1一.实验目的1.熟悉UML统一建模语言;2.回顾熟悉适配器模式、桥接模式、组合、装饰模式;3.熟悉XML文件的操作;4.熟悉java的反射机制。二.实验内容(1)使用Java语言实现一个双向适配器实例,使得猫可以学狗叫,狗可以学猫抓老鼠。(2)某日志记录器(Logger)既可以支持不同的操作系统,还可以支持多种编程语言,并且可以使用不同的输出方式。使用桥接模式设计该系统。(3)使用组合设计模式设计一个杀毒软件(AntiVirus)的框架,该软件既可以对某个文件夹(Folder)杀毒,也可以对某个指定的文件(File)进行杀毒,文件种类包括文本文件TextFile、图片文件ImageFile、视频文件VideoFile。(4)某图书管理系统中,书籍类(Book)具有借书方法borrowBook()和还书方法returnBook()。现需要动态给书籍对象添加冻结方法freeze()和遗失方法lose()。使用装饰模式设计该系统。三.实验环境PC微机;Windows操作系统;VisualStudio程序集成环境。四.实验内容(1)使用Java语言实现一个双向适配器实例,使得猫可以学狗叫,狗可以学猫抓老鼠。ArealCat.javapackage设计模式实验十四周_1;publicclassArealCatimplementsCat{publicvoidcatlooks(){System.out.println(Iamarealcat,Ihavearealcatlooks.);}高级语言程序设计实验指导书2publicvoidzhuoshu(){System.out.println(Iamarealcat,Ihavecancatchamouse.);}}ArealDog.javapackage设计模式实验十四周_1;publicclassArealDogimplementsDog{publicvoiddoglooks(){System.out.println(Iamarealdog,Ihavearealdoglooks.);}publicvoidbark(){System.out.println(Iamarealdog,Ihavebark.);}}Cat.javapackage设计模式实验十四周_1;publicinterfaceCat{publicvoidcatlooks();publicvoidzhuoshu();}CDAdapter.javapackage设计模式实验十四周_1;publicclassCDAdapterimplementsCat,Dog{Catcat=null;publicCDAdapter(Catcat){this.cat=cat;}publicvoiddoglooks(){System.out.println(Iamadog,too.);}publicvoidbark(){高级语言程序设计实验指导书3cat.zhuoshu();}Dogdog=null;publicCDAdapter(Dogdog){this.dog=dog;}publicvoidcatlooks(){System.out.println(Iamacat,too);}publicvoidzhuoshu(){dog.bark();}}Dog.javapackage设计模式实验十四周_1;publicinterfaceDog{publicvoiddoglooks();publicvoidbark();}Client.javapackage设计模式实验十四周_1;publicclassClient{publicstaticvoidmain(String[]args){CatAFakeCat=newCDAdapter(newArealDog());AFakeCat.catlooks();AFakeCat.zhuoshu();DogAFakeDog=newCDAdapter(newArealCat());AFakeDog.doglooks();AFakeDog.bark();}}UML.java高级语言程序设计实验指导书4实验结果:(2)某日志记录器(Logger)既可以支持不同的操作系统,还可以支持多种编程语言,并且可以使用不同的输出方式。使用桥接模式设计该系统。Logger.javapackage设计模式实验十四周_2;publicclassLogger{protectedLanguagelanguage;protectedOperationSystemoperationSystem;publicLanguagegetLanguage(){returnlanguage;}publicOperationSystemgetOperationSystem(){returnoperationSystem;}publicvoidsetLanguage(Languagelanguage){this.language=language;}publicvoidsetOperationSystem(OperationSystemoperationSystem){this.operationSystem=operationSystem;高级语言程序设计实验指导书5}publicvoidoutput(){System.out.println(输出Logger.);}}Consolelog.javapackage设计模式实验十四周_2;publicclassConsolelogextendsLogger{publicvoidoutput(){System.out.println(用+operationSystem.Output()+操作系统,+language.Output()+编写,输出Consolelog.);}}Filelog.javapackage设计模式实验十四周_2;publicclassFilelogextendsLogger{publicvoidoutput(){System.out.println(用+operationSystem.Output()+操作系统,+language.Output()+编写,输出Filelog.);}}XMLlog.javapackage设计模式实验十四周_2;publicclassXMLlogextendsLogger{publicvoidoutput(){System.out.println(用+operationSystem.Output()+操作系统,+language.Output()+编写,输出XMLlog.);}}高级语言程序设计实验指导书6OperationSystem.javapackage设计模式实验十四周_2;publicabstractclassOperationSystem{publicabstractStringOutput();}Linux.javapackage设计模式实验十四周_2;publicclassLinuxextendsOperationSystem{publicStringOutput(){returnLinux;}}Unix.javapackage设计模式实验十四周_2;publicclassUnixextendsOperationSystem{publicStringOutput(){returnUnix;}}Windows.javapackage设计模式实验十四周_2;publicclassWindowsextendsOperationSystem{publicStringOutput(){returnWindows;}}高级语言程序设计实验指导书7Language.javapackage设计模式实验十四周_2;publicabstractclassLanguage{publicabstractStringOutput();}Cyuyan.javapackage设计模式实验十四周_2;publicclassCyuyanextendsLanguage{publicStringOutput(){returnC语言;}}Pascal.javapackage设计模式实验十四周_2;publicclassPascalextendsLanguage{publicStringOutput(){returnPascal;}}Java.javapackage设计模式实验十四周_2;publicclassJavaextendsLanguage{publicStringOutput(){returnJava;高级语言程序设计实验指导书8}}Client.javapackage设计模式实验十四周_2;publicclassClient{publicstaticvoidmain(String[]args){Cyuyancyuyan=newCyuyan();Javajava=newJava();Pascalpascal=newPascal();Linuxlinux=newLinux();Windowswindows=newWindows();Unixunix=newUnix();Consolelogconsolelog=newConsolelog();consolelog.setLanguage(cyuyan);consolelog.setOperationSystem(linux);consolelog.output();Filelogfilelog=newFilelog();filelog.setLanguage(java);filelog.setOperationSystem(windows);filelog.output();XMLlogxmllog=newXMLlog();xmllog.setLanguage(pascal);xmllog.setOperationSystem(unix);xmllog.output();}}UML.java高级语言程序设计实验指导书9实验结果:(3)使用组合设计模式设计一个杀毒软件(AntiVirus)的框架,该软件既可以对某个文件夹(Folder)杀毒,也可以对某个指定的文件(File)进行杀毒,文件种类包括文本文件TextFile、图片文件ImageFile、视频文件VideoFile。AntiVirus.javapackage设计模式实验十四周_3;publicabstractclassAntiVirus{publicabstractvoidscan();}ImageFile.javapackage设计模式实验十四周_3;publicclassImageFileextendsAntiVirus{publicvoidscan(){System.out.println(扫描图片文件);}}高级语言程序设计实验指导书10TextFile.javapackage设计模式实验十四周_3;publicclassTextFileextendsAntiVirus{publicvoidscan(){System.out.println(扫描文本文件);}}VideoFile.javapackage设计模式实验十四周_3;publicclassVideoFileextendsAntiVirus{publicvoidscan(){System.out.println(扫描视频文件);}}Folder.javapackage设计模式实验十四周_3;importjava.util.*;publicclassFolderextendsAntiVirus{privateArrayListlist=newArrayList();publicvoidadd(AntiViruselement){list.add(element);}publicvoidremove(AntiViruselement){list.remove(element);}
本文标题:设计模式十四
链接地址:https://www.777doc.com/doc-4663866 .html