观察者模式实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《软件开发实践》实验报告
实验三观察者模式
一、
实验目的:
1.理解观察者模式的基本理论
2.掌握观察者模式的使用方法
二、实验内容:
1.模式定义:观察者<Observer>模式是软件设计模式的一种。在此种模式中,一个目标物件管理所有相依于它的观察者物件,并且在它本身的状态改变时主动发出通知。这通常透过呼叫各观察者所提供的方法来实现。此种模式通常被用来实作事件处理系统。
privatefloatmaxTemp=0.0f;
privatefloatminTe来自百度文库p= 200;
privatefloattempSum=0.0f;
privateintnumReadings;
publicStatisticsDisplay(Observable observable)
{
this.observable= observable;
}
publicvoidupdate(Observable obs,Object arg)
{
if(obsinstanceofWeatherData)
{
WeatherData weatherData = (WeatherData)obs;
this.temperature= weatherData.getTemperature();
{
minTemp=this.temperature;
}
display();
}
运行结果:
四、心得体会
创建类的实例对象:通常我们的做法是A a=new A();实际上模式也可以用来实例化类的对象。我们之所以提出模式是因为在某些情况下,例如在实例化对象是要初始化的数据太多,或者其他原因比如访问数据库等。如果把这些东西写进构造函数里会使你的代码看起来就很难看还很容易出错。这时我们引入了模式:我们将创建实例的工作与使用实例的工作分开,也就是说,让创建实例所需要的大量初始化工作从的构造函数中分离出去。
}
}
importjava.util.Observable;
importjava.util.Observer;
publicclassStatisticsDisplayimplementsObserver,DisplayElement
{
Observableobservable;
privatefloattemperature;
publicclassWeatherDataextendsObservable
{
privatefloattemperature;
privatefloathumidity;
privatefloatpressure;
publicWeatherData(){}
publicvoidmeasurementsChanged()//更新数据
this.pressure= pressure;
measurementsChanged();
}
publicfloatgetTemperature()
{
returntemperature;
}
publicfloatgetHunidity()
{
returnhumidity;
}
publicfloatgetPressure()
{
returnpressure;
}
}
publicinterfaceDisplayElement
{
publicvoiddisplay();
}
importjava.util.Observable;
importjava.util.Observer;
publicclassCurrentConditionsDisplayimplementsObserver,DisplayElement
this.temperature= weatherData.getTemperature();
tempSum+=this.temperature;
numReadings++;
if(this.temperature>maxTemp)
{
maxTemp=this.temperature;
}
if(this.temperature<minTemp)
observable.addObserver(this);//添加观察者
}
publicvoidupdate(Observable obs,Object arg)
{
if(obsinstanceofWeatherData)
{
WeatherData weatherData = (WeatherData)obs;
this.humidity= weatherData.getHunidity();
display();
}
}
publicvoiddisplay()
{
System.out.println("Current conditions: "+temperature+
"F degrees and "+humidity+"% humidity");
{
Observableobservable;
privatefloattemperature;
privatefloathumidity;
publicCurrentConditionsDisplay(Observable observable)
{
this.observable= observable;
observable.addObserver(this);//添加观察者
{
setChanged();
notifyObservers();
}
publicvoidsetMeasurements(floattemperature,floathumidity,floatpressure)
{
this.temperature= temperature;
this.humidity= humidity;
2.模式练习:某只股票(Stock)在网上开通了实时报价功能,那些注册并联网的投资者(Investor)可以在该股票价格发生变化时自动得到通知。请用观察者模式演示该功能。
三、实验结果
1.开发环境:VS.2008
2.主要源代码:
importjava.util.Observable;
importjava.util.Observer;
相关文档
最新文档