实验二观察者模式与装饰模式

实验二观察者模式与装饰模式

ID:30879904

大小:178.50 KB

页数:8页

时间:2019-01-04

实验二观察者模式与装饰模式_第1页
实验二观察者模式与装饰模式_第2页
实验二观察者模式与装饰模式_第3页
实验二观察者模式与装饰模式_第4页
实验二观察者模式与装饰模式_第5页
资源描述:

《实验二观察者模式与装饰模式》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、实验报告课程名称java设计模式实验项目观察者模式与装饰模式的应用实验仪器PC个人终端系别计算机学院专业软件工程班级/学号软工1302/2013011342学生姓名阮狮实验日期2015-10-12成绩指导教师张志华实验二观察者模式与装饰模式的应用一、实验目的通过该实验,理解观察者模式和装饰模式的意图、结构,在软件开发屮使用这些模式并进行功能验证。二、实验内容1.猫、狗与老鼠。假设猫是老鼠和狗的观察目标,老鼠和狗是观察者,猫叫老鼠跑,狗也跟着叫,使用观察者模式描述该过程。2.我跟妈妈说:“妈妈,我和妹妹在院子里玩。饭做好了叫我们一声。”请用观察者模式设计一个模拟系统。

2、3.采用装饰模式为图书馆中的项目(书或咅像盘)增加“可借”功能。使用Java语言设计一个模拟系统。4.自定义JButtono开发人员设计用户接口时,通常需要更多有特色的控件,Decorator模式就提供了一个方法去创造或修改现有的UI控件。使用装饰模式实现一个带有对角线的按钮。三、实验步骤与要求1.对于以上题目要认真分析和理解题意,在观察者模式和装饰模式题目中各选1个进行编程,程序屮要求使用相应的模式。2.上机录入,使用JDK编译器调试、运行、验证程序。3•请指导教师审查程序和运行结果并评定成绩;4.撰写并上交实验报告。四、实验原理:在许多设计中,经常涉及到多个对象

3、都对一个特殊对象中的数据变化感兴趣,而且这多个对彖都希望跟踪那个特殊对彖中的数据变化,此时可以采用观察者模式。观察者模式意图:“定义对象间的一种一对多的依赖关系,当一个对彖的状态发生变化时,所有依赖于它的对象都得到通知并被自动更新。”观察者模式的UML类图:装饰模式是动态地扩展一个对象的功能,而不需要改变原始类代码的一种成熟模式。装饰模式意图:“动态地给对象添加一些额外的职责。就功能来说装饰模式相比生成子类更为灵活。”装饰模式的UML类图:五、上机报告内容1、班级、学号、姓名、实验完成日期;2、实验题目;3、设计方案:给出你的设计方案,包括结构类图及相关说明;4、源

4、代码:设计方案中各个类和接口的源代码,包括测试主类的源代码.5、测试数据及运行结果6、总结:1)运用设计模式总结:对所运用的设计模式的名称,分类,意图,结构,角色作用的总结,所运用的面向对象设计原则。2)选择一个题目进行说明:如果不使用观察者模式和装饰模式,你能想到其他方法解决问题吗,简要描述你的方案,并和采用命令模式的方案做简单比较。3)本次实验遇到的问题、如何解决的;本次实验的经验、体会、改进设想等。六、实验成绩考核方法实验成绩由出勤、实验完成情况以及实验报告综合评定。考核成绩比例分配:出勤占15%、实验完成情况占50%、实验报告占35%七、上机安排本实验共需2

5、个学吋。观察者模式Subject•javapublicinterfaceSubject{publicvoidaddObserver(Observero);publicvoiddeleteObserver(Observero);publicvoidnotifyObservers();}Observer.javapublicinterfaceObserver{publicvoidSayHi(StringheardMess);}Mouse.javapublicclassMouseimplementsObserver!publicSubjectsubject;publicM

6、ouse(Subjectsubject){this>subject=subject;subject•addObserver(this);}publicvoidSayHi(StringheardMess){System.out.printIn("我是观察者一老鼠,吱吱吱,我跑了!=");}}Dog.javapublicclassDogimplementsObserver{publicSubjectsubject;publicDog(Subjectsubject){thiSeSubject=subject;subject•addObserver(this);}publi

7、cvoidSayHi(StringheardMess){System・out・printin(”我是观察者一狗,犬吠;}}Cat.javaimportjava.util.ArrayList;publicclassCatimplementsSubject{Stringmess;booleanchanged;ArrayListanimalsList;publicCat(){animalsList二newArrayList();mess=”Hi”;changed=false;}publicvoidaddObserver(Obse

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。