观察者模式实验报告

观察者模式实验报告

ID:81521777

大小:590.87 KB

页数:6页

时间:2023-09-05

上传者:166****0031
观察者模式实验报告_第1页
观察者模式实验报告_第2页
观察者模式实验报告_第3页
观察者模式实验报告_第4页
观察者模式实验报告_第5页
观察者模式实验报告_第6页
资源描述:

《观察者模式实验报告》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

网页资讯视频图片知道文库贴吧采购地图|百度首页登录加入VIP意见反馈下载客户端4/13/2019观察者模式实验报告-百度文库首页分类精品内容申请认证机构合作频道专区百度智慧课堂百度教育VIP百度文库专业资料IT/计算机计算机软件及应用软件设计与体系结构实验报告软件设计与体系课程名称课程编号0920116结构实验项目名称观察者模式案例学号班级姓名专业学生所在学院指导教师实验室名称地点实验时间https://wenku.baidu.com/view/888531a75901020207409cce.html1/6

14/13/2019观察者模式实验报告-百度文库实验名称:观察者模式案例实验目的:观察者模式(ObserverPattern)是设计模式中行为模式的一种,它解决了上述具有一对多依赖关系的对象的重用问题。此模式的参与者分为两大类,一类是被观察的目标,另一类是观察该目标的观察者们。正因为该模式是基于“一对多”的关系,所以该模式一般是应用于由一个目标对象和N个观察者对象组成(当然也可以扩展为有多个目标对象,但我们现在只讨论前者)的场合。当目标对象的状态发生改变或做出某种行为时,正在观察该目标对象的观察者们将自动地、连锁地作出相应的响应行为。通过本次实验了解观察者模式的原理。并能够运用观察者模式来进行编程。实验内容1UML类图2 程序的源代码publicclassObserverApp{publicstaticvoidmain(Stringargs[]){//CreatetheSubjectandObservers.ConcreteSubjecti=newConcreteSubject("IBM",120.10);ConcreteSubjectj=newConcreteSubject("IBM",120.10);NameObservernameObs=newNameObserver();PriceObserverpriceObs=newPriceObserver("IBM"张,"三");PriceObserverpriceObss=newPriceObserver("IBM"李四,"");//AddthoseObservers!i.addObserver(nameObs);i.addObserver(priceObs);j.addObserver(nameObs);j.addObserver(priceObss);//MakechangestotheSubject.https://wenku.baidu.com/view/888531a75901020207409cce.html2/6

24/13/2019观察者模式实验报告-百度文库i.setName("张三");j.setName("李四");i.setPrice(120.10);j.setPrice(120.10);i.setPrice(121.00);j.setPrice(121.00);i.setPrice(120.50);j.setPrice(120.50);i.setPrice(120.75);j.setPrice(120.75);}}importjava.util.Observable;publicclassConcreteSubjectextendsObservable{privateStringname;privatedoubleprice;publicConcreteSubject(Stringname,doubleprice){this.name=name;this.price=price;}publicStringgetNameone(){returnname;}publicdoublegetPrice(){returnprice;}publicvoidsetName(Stringname){this.name=name;setChanged();notifyObservers(name);}publicvoidsetPrice(doubleprice){this.price=price;setChanged();notifyObservers(newFloat(price));}}importjava.util.Observer;importjava.util.Observable;publicclassNameObserverimplementsObserver{privateStringname;publicNameObserver(){name=null;}https://wenku.baidu.com/view/888531a75901020207409cce.html3/6

34/13/2019观察者模式实验报告-百度文库publicvoidupdate(Observableobj,Objectarg){if(arginstanceofString){name=(String)arg;}}}importjava.util.Observer;importjava.util.Observable;publicclassPriceObserverimplementsObserver{privatefloatprice;privateStringname1;privateStringname2;publicPriceObserver(Stringnamef,Stringnames){price=0;name1=namef;name2=names;}publicvoidupdate(Observableobj,Objectarg){if(arginstanceofFloat){price=((Float)arg).floatValue();System.out.println("通知到股民"+name2+""+name1+"最新股价为"+price);}}}3实验截图https://wenku.baidu.com/view/888531a75901020207409cce.html4/6

44/13/2019观察者模式实验报告-百度文库对该模式的认识经过本次观察者模式的实验,通过自己动手编代码,是自己理解观察者模式机制,并且知道观察者模式有以下的优点:第一、观察者模式在被观察者和观察者之间建立一个抽象的耦合。被观察者角色所知道的只是一个具体观察者列表,每一个具体观察者都符合一个抽象观察者的接口。被观察者并不认识任何一个具体观察者,它只知道它们都有一个共同的接口。由于被观察者和观察者没有紧密地耦合在一起,因此它们可以属于不同的抽象化层次。如果被观察者和观察者都被扔到一起,那么这个对象必然跨越抽象化和具体化层次。第二、观察者模式支持广播通讯。被观察者会向所有的登记过的观察者发出通知。经过本次实验课的练习,我明白了编代码也是一种技巧,而设计模式便是大家提炼出来的有技巧编代码。使我对软件设计与体系结构这门课有了浓厚的兴趣,相信在学习这门课的知识,会让我获益良多。扣分原因(有扣分时填写)扣分https://wenku.baidu.com/view/888531a75901020207409cce.html5/6

54/13/2019观察者模式实验报告-百度文库https://wenku.baidu.com/view/888531a75901020207409cce.html6/6

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

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

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