欢迎来到天天文库
浏览记录
ID:78330840
大小:18.71 KB
页数:5页
时间:2022-02-01
《观察者模式实验报告》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、本文格式为Word版,下载可任意编辑观察者模式实验报告软件设计与体系结构实实验报告课程名称软件设计与体系结构课程编号0920216试验项目名称观看者模式案例学号班级姓名专业同学所在学院指导老师试验室名称地点试验时间试验名称:观看者模式案例试验目的:观看者模式(ObserverPattern)是设计模式中行为模式的一种,它解决了上述具有一对多依靠关系的对象的重用问题。此模式的参加者分为两大类,一类是被观看的目标,另一类是观看该目标的观看者们。正由于该模式是基于"一对多'的关系,所以该模式一般是应用于由一个目标对象和N个观看者对象组成(当然也可以扩展为有多个目标对象,但我们现在只争论前者)的场合
2、。当目标对象的状态发生转变或做出某种行为时,正在观看该目标对象的观看者们将自动地、连锁地作出相应的响应行为。通过本次试验了解观看者模式的原理。并能够运用观看者模式来进行编程。试验内容第5页共5页本文格式为Word版,下载可任意编辑1UML类图2程序的源代码publicclassObserverApp{publicstaticvoidmain(Stringargs[]){//CreatetheSubjectandObservers.ConcreteSubjecti=newConcreteSubject(IBM,120.10);ConcreteSubjectj=newConcreteSubjec
3、t(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.i.setName(张
4、三);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;publicclass第5页共5页本文格式为Word版,下载可任意编辑ConcreteSubjectextendsObservable{privateStringname;privatedoublepr
5、ice;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();
6、notifyObservers(newFloat(price));}}importjava.util.Observer;importjava.util.Observable;publicclassNameObserverimplementsObserver{privateStringname;publicNameObserver(){name=null;}publicvoidupdate(Observableobj,Objectarg){if(arginstanceofString){第5页共5页本文格式为Word版,下载可任意编辑name=(String)arg;}}}importjava
7、.util.Observer;importjava.util.Observable;publicclassPriceObserverimplementsObserver{privatefloatprice;privateStringname1;privateStringname2;publicPriceObserver(Stringnamef,Stringnames){price=0;name1=namef;
此文档下载收益归作者所有