资源预览内容
第1页 / 共21页
第2页 / 共21页
第3页 / 共21页
第4页 / 共21页
第5页 / 共21页
第6页 / 共21页
第7页 / 共21页
第8页 / 共21页
第9页 / 共21页
第10页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
-设计模式实验二实 验 报告 书专业班级 软 件 0703 学 号 3901070324 姓 名 吉亚云 指导老师 伟 时 间 2010年4月 24日 中南大学软件学院实验二设计模式上机实验二一、实验目的使用PowerDesigner和任意一种面向对象编程语言实现几种常用的设计模式,加深对这些模式的理解,包括装饰模式、外观模式、代理模式、职责链模式、命令模式、迭代器模式、观察者模式、状态模式、策略模式和模板方法模式。二、实验内容使用PowerDesigner和任意一种面向对象编程语言实现装饰模式、外观模式、代理模式、职责链模式、命令模式、迭代器模式、观察者模式、状态模式、策略模式和模板方法模式,包括根据实例绘制相应的模式结构图、编写模式实现代码,运行并测试模式实例代码。三、实验要求1. 正确无误绘制装饰模式、外观模式、代理模式、职责链模式、命令模式、迭代器模式、观察者模式、状态模式、策略模式和模板方法模式的模式结构图;2. 使用任意一种面向对象编程语言实现装饰模式、外观模式、代理模式、职责链模式、命令模式、迭代器模式、观察者模式、状态模式、策略模式和模板方法模式,代码运行正确无误。四、实验步骤1. 使用PowerDesigner绘制装饰模式结构图并用面向对象编程语言实现该模式;2. 使用PowerDesigner绘制外观模式结构图并用面向对象编程语言实现该模式;3. 使用PowerDesigner绘制代理模式结构图并用面向对象编程语言实现该模式;4. 使用PowerDesigner绘制职责链模式结构图并用面向对象编程语言实现该模式;5. 使用PowerDesigner绘制命令模式结构图并用面向对象编程语言实现该模式;6. 使用PowerDesigner绘制迭代器模式结构图并用面向对象编程语言实现该模式;7. 使用PowerDesigner绘制观察者模式结构图并用面向对象编程语言实现该模式;8. 使用PowerDesigner绘制状态模式结构图并用面向对象编程语言实现该模式;9. 使用PowerDesigner绘制策略模式结构图并用面向对象编程语言实现该模式;10. 使用PowerDesigner绘制模板方法模式结构图并用面向对象编程语言实现该模式。五、实验报告要求1. 提供装饰模式结构图及实现代码;2. 提供外观模式结构图及实现代码;3. 提供代理模式结构图及实现代码;4. 提供职责链模式结构图及实现代码;5. 提供命令模式结构图及实现代码;6. 提供迭代器模式结构图及实现代码;7. 提供观察者模式结构图及实现代码;8. 提供状态模式结构图及实现代码;9. 提供策略模式结构图及实现代码;10. 提供模板方法模式结构图及实现代码。六、实验结果(1)装饰模式*图书管理系统中,书籍类(Book)具有借书方法borrowBook()和还书方法returnBook() 。现需要动态给书籍对象添加冻结方法freeze()和遗失方法lose()。使用装饰模式设计该系统,绘制类图并编程实现。package DirectorPattern;interface Bookvoid borrowBook();void returnBook();finalclass MyBook implements Bookpublicvoid borrowBook()System.out.println(MyBook borrowing!);publicvoid returnBook()System.out.println(MyBook returning!); abstractclass BookDirector implements Bookprivate Book book;public BookDirector(Book book)System.out.println(Book directoring!);this.book=book;publicvoid borrowBook()book.borrowBook();publicvoid returnBook()book.returnBook();class NewBook e*tends BookDirectorpublic NewBook(Book book)super(book);System.out.println(Book changed to NewBook!);publicvoid freeze()System.out.println(Book freezing!);publicvoid lose()System.out.println(Book lost!);publicclass BookDirectorClient publicstaticvoid main(String a)/半透明Book book=new MyBook(); NewBook newBook=new NewBook(book);newBook.borrowBook();newBook.returnBook(); newBook.freeze();newBook.lose();运行结果:(2)外观模式在电脑主机(Mainframe)中,只需要按下主机的开机按钮(on(),即可调用其他硬件设备和软件的启动方法,如内存(Memory)的自检(check(),CPU的运行(run(),硬盘(HardDisk)的读取(read(),操作系统(OS)的载入(load()等,如果*一过程发生错误则电脑启动失败。使用外观模式模拟该过程,绘制类图并编程实现。package FacadePattern;class Mainframe private Memory memory;private CPU cpu;private HardDisk disk;private OS os;public Mainframe()memory=new Memory() ;cpu=new CPU() ;disk=new HardDisk() ;os=new OS() ;publicvoid on()memory.check(); cpu.run();disk.read();os.load(); publicvoidoff()memory.off(); cpu.off();disk.off();os.off(); class Memory publicvoid check()System.out.println( Memory checking!);publicvoid off()System.out.println(Memory off!);class CPUpublicvoid run()System.out.println(CPU running!);publicvoid off()System.out.println(CPU off!);class HardDiskpublicvoid read()System.out.println(HardDisk reading!);publicvoid off()System.out.println(HardDisk off!);class OSpublicvoid load()System.out.println(OS loading!);publicvoid off()System.out.println(OS off!);publicclass puterFacadeClientpublicstaticvoid main(String args)Mainframe mainframe=new Mainframe();mainframe.on();System.out.println(-);mainframe.off();运行结果:(3) 代理模式应用软件所提供的桌面快捷方式是快速启动应用程序的代理,桌面快捷方式一般使用一*小图片来表示(Picture),通过调用快捷方式的run()方法将调用应用软件(Application)的run()方法。使用代理模式模拟该过程,绘制类图并编程实现。package Pro*yPattern;interface Softwarevoid run(); class Application implements Softwarepublicvoid run()System.out.println(Application is running!);class Picture implements Softwareprivate Application app=new Application();publicvoid run()app.run(); publicclass FastwayPro*yClientpublicstaticvoid main(String a)Software pro*y=new Picture();pro*y.run();运行结果:(4) 职责链模式*物资管理系统中物资采购需要分级审批,主任可以审批1万元及以下的采购单,部门经理可以审批5万元及以下的采购单,副总经理可以审批10万元及以下的采购单,总经理可以审批20万元及以下的采购单,20万元以上的采购单需要开会确定。现使用职责链模式设计该系统,绘制类图并编程实现。package ChainResponsibilityPattern;class ShoppingRequestprivate String shoppingReason;privatedoublebillMoney;public ShoppingRequest(String shoppingReason,double billMoney)this.shoppingReason=shoppingReason;this.billMoney=billMoney;public String getShoppingReason() returnshoppingReason;publicvoid setShopping
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号