设计模式十四.docx

上传人:小飞机 文档编号:2792681 上传时间:2023-02-25 格式:DOCX 页数:23 大小:188.50KB
返回 下载 相关 举报
设计模式十四.docx_第1页
第1页 / 共23页
设计模式十四.docx_第2页
第2页 / 共23页
设计模式十四.docx_第3页
第3页 / 共23页
设计模式十四.docx_第4页
第4页 / 共23页
设计模式十四.docx_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《设计模式十四.docx》由会员分享,可在线阅读,更多相关《设计模式十四.docx(23页珍藏版)》请在三一办公上搜索。

1、精选优质文档-倾情为你奉上一实验目的1. 熟悉UML统一建模语言;2. 回顾熟悉适配器模式、桥接模式、组合、装饰模式;3. 熟悉XML文件的操作;4. 熟悉java的反射机制。二实验内容(1)使用Java语言实现一个双向适配器实例,使得猫可以学狗叫,狗可以学猫抓老鼠。(2)某日志记录器(Logger)既可以支持不同的操作系统,还可以支持多种编程语言,并且可以使用不同的输出方式。使用桥接模式设计该系统。(3)使用组合设计模式设计一个杀毒软件(AntiVirus)的框架,该软件既可以对某个文件夹(Folder)杀毒,也可以对某个指定的文件(File)进行杀毒,文件种类包括文本文件TextFile、

2、图片文件ImageFile、视频文件VideoFile。(4)某图书管理系统中,书籍类(Book)具有借书方法borrowBook()和还书方法returnBook()。现需要动态给书籍对象添加冻结方法freeze()和遗失方法lose()。使用装饰模式设计该系统。三实验环境PC微机;Windows 操作系统;Visual Studio 程序集成环境。四 实验内容(1) 使用Java语言实现一个双向适配器实例,使得猫可以学狗叫,狗可以学猫抓老鼠。ArealCat.javapackage 设计模式实验十四周_1;public class ArealCat implements Catpublic

3、 void catlooks()System.out.println(I am a real cat,I have a real catlooks.);public void zhuoshu()System.out.println(I am a real cat,I have can catch a mouse.);ArealDog.javapackage 设计模式实验十四周_1;public class ArealDog implements Dog public void doglooks()System.out.println(I am a real dog,I have a real

4、doglooks.);public void bark()System.out.println(I am a real dog,I have bark.);Cat.javapackage 设计模式实验十四周_1;public interface Cat public void catlooks();public void zhuoshu();CDAdapter.javapackage 设计模式实验十四周_1;public class CDAdapter implements Cat,DogCat cat=null;public CDAdapter(Cat cat)this.cat=cat;pu

5、blic void doglooks()System.out.println(I am a dog,too.);public void bark()cat.zhuoshu();Dog dog=null;public CDAdapter(Dog dog)this.dog=dog;public void catlooks()System.out.println(I am a cat,too);public void zhuoshu()dog.bark();Dog.javapackage 设计模式实验十四周_1;public interface Dog public void doglooks();

6、public void bark();Client.javapackage 设计模式实验十四周_1;public class Client public static void main(String args)Cat AFakeCat =new CDAdapter(new ArealDog();AFakeCat.catlooks();AFakeCat.zhuoshu();Dog AFakeDog=new CDAdapter(new ArealCat();AFakeDog.doglooks();AFakeDog.bark();UML.java实验结果:(2) 某日志记录器(Logger)既可以

7、支持不同的操作系统,还可以支持多种编程语言,并且可以使用不同的输出方式。使用桥接模式设计该系统。Logger.javapackage 设计模式实验十四周_2;public class Logger protected Language language;protected OperationSystem operationSystem;public Language getLanguage()return language;public OperationSystem getOperationSystem()return operationSystem;public void setLangu

8、age(Language language)this.language=language;public void setOperationSystem(OperationSystem operationSystem)this.operationSystem=operationSystem;public void output()System.out.println(输出Logger.);Consolelog.javapackage 设计模式实验十四周_2;public class Consolelog extends Loggerpublic void output()System.out.p

9、rintln(用+operationSystem.Output()+操作系统,+language.Output()+编写,输出Consolelog.);Filelog.javapackage 设计模式实验十四周_2;public class Filelog extends Loggerpublic void output()System.out.println(用+operationSystem.Output()+操作系统,+language.Output()+编写,输出Filelog.);XMLlog.javapackage 设计模式实验十四周_2;public class XMLlog e

10、xtends Loggerpublic void output()System.out.println(用+operationSystem.Output()+操作系统,+language.Output()+编写,输出XMLlog.);OperationSystem.javapackage 设计模式实验十四周_2;public abstract class OperationSystem public abstract String Output();Linux.javapackage 设计模式实验十四周_2;public class Linux extends OperationSystemp

11、ublic String Output()return Linux;Unix.javapackage 设计模式实验十四周_2;public class Unix extends OperationSystempublic String Output()return Unix;Windows.javapackage 设计模式实验十四周_2;public class Windows extends OperationSystempublic String Output()return Windows;Language.javapackage 设计模式实验十四周_2;public abstract

12、class Language public abstract String Output();Cyuyan.javapackage 设计模式实验十四周_2;public class Cyuyan extends Languagepublic String Output()return C语言;Pascal.javapackage 设计模式实验十四周_2;public class Pascal extends Languagepublic String Output()return Pascal;Java.javapackage 设计模式实验十四周_2;public class Java ext

13、ends Languagepublic String Output()return Java;Client.javapackage 设计模式实验十四周_2;public class Client public static void main(String args)Cyuyan cyuyan=new Cyuyan();Java java=new Java();Pascal pascal=new Pascal();Linux linux=new Linux();Windows windows=new Windows();Unix unix=new Unix();Consolelog conso

14、lelog=new Consolelog();consolelog.setLanguage(cyuyan);consolelog.setOperationSystem(linux);consolelog.output();Filelog filelog=new Filelog();filelog.setLanguage(java);filelog.setOperationSystem(windows);filelog.output();XMLlog xmllog=new XMLlog();xmllog.setLanguage(pascal);xmllog.setOperationSystem(

15、unix);xmllog.output();UML.java实验结果:(3) 使用组合设计模式设计一个杀毒软件(AntiVirus)的框架,该软件既可以对某个文件夹(Folder)杀毒,也可以对某个指定的文件(File)进行杀毒,文件种类包括文本文件TextFile、图片文件ImageFile、视频文件VideoFile。AntiVirus.javapackage 设计模式实验十四周_3;public abstract class AntiVirus public abstract void scan();ImageFile.javapackage 设计模式实验十四周_3;public cla

16、ss ImageFile extends AntiViruspublic void scan()System.out.println(扫描图片文件);TextFile.javapackage 设计模式实验十四周_3;public class TextFile extends AntiViruspublic void scan()System.out.println(扫描文本文件);VideoFile.javapackage 设计模式实验十四周_3;public class VideoFile extends AntiViruspublic void scan()System.out.print

17、ln(扫描视频文件);Folder.javapackage 设计模式实验十四周_3;import java.util.*;public class Folder extends AntiVirusprivate ArrayList list=new ArrayList();public void add(AntiVirus element)list.add(element);public void remove(AntiVirus element)list.remove(element);public void scan()for(Object object:list)(AntiVirus)o

18、bject).scan();Client.javapackage 设计模式实验十四周_3;public class Client public static void main(String a)AntiVirus obj1,obj2,obj3,obj4,obj5;Folder folder1,folder2,folder3;obj1=new ImageFile();obj2=new TextFile();folder1=new Folder();folder1.add(obj1);folder1.add(obj2);obj3=new VideoFile();obj4=new VideoFil

19、e();folder2=new Folder();folder2.add(obj3);folder2.add(obj4);obj5=new ImageFile();folder3=new Folder();folder3.add(folder1);folder3.add(folder2);folder3.add(obj5);folder3.scan();UML.java实验结果:(4)某图书管理系统中,书籍类(Book)具有借书方法borrowBook()和还书方法returnBook()。现需要动态给书籍对象添加冻结方法freeze()和遗失方法lose()。使用装饰模式设计该系统。Book

20、.javapackage 设计模式实验十四周_4;public interface Book public void borrowBook();public void returnBook();Ibook.javapackage 设计模式实验十四周_4;public class Ibook implements Bookpublic void borrowBook()System.out.println(借书!);public void returnBook()System.out.println(还书!);Changer.javapackage 设计模式实验十四周_4;public clas

21、s Changer implements Bookprivate Book book;public Changer(Book book)this.book=book;public void borrowBook()book.borrowBook();public void returnBook()book.returnBook();LoseBook.javapackage 设计模式实验十四周_4;public class LoseBook extends Changerpublic LoseBook(Book book)super(book);public void lose()System.

22、out.println(这本书已经遗失);FreezeBook.javapackage 设计模式实验十四周_4;public class FreezeBook extends Changerpublic FreezeBook(Book book)super(book);public void freeze()System.out.println(这本书已经被冻结);Client.javapackage 设计模式实验十四周_4;public class Client public static void main(String args)Ibook ibook=new Ibook();ibook

23、.borrowBook();ibook.returnBook();System.out.println(-);FreezeBook freezebook=new FreezeBook(ibook);freezebook.borrowBook();freezebook.returnBook();freezebook.freeze();System.out.println(-);LoseBook losebook=new LoseBook(ibook);losebook.borrowBook();losebook.returnBook();losebook.lose();UML.java实验结果:专心-专注-专业

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号