观察者模式

被观察者:

public classWeatherData extends Observable{

 

//被观察者的属性

privatefloat temp;

privatefloat presseure;

 

//修改主题状态,通知观察者

publicvoid setStatus(float temp, float presseure){

this.temp= temp;

this.presseure= presseure;

 

statusChanged();

}

 

//1>调用setChanged()方法,标记状态已改变;

    //2>调用notifyObserver()方法,完成通知的工作。

publicvoid statusChanged(){

setChanged();

notifyObservers();

}

 

publicfloat getTemp() {

returntemp;

}

 

publicfloat getPresseure() {

returnpresseure;

}

 

}


观察者:

importjava.util.Observable;

importjava.util.Observer;

 

public classCurrentConditationDisplay implements Observer {

 

privatefloat temp;

privatefloat pressure;

 

//主题

privateObservable observable;

 

//1、初始化被观察者  2、把观察者添加到被观察者上  3、当被观察者改变是,通知观察者

publicCurrentConditationDisplay(Observable observable){

this.observable= observable;

//把观察者添加到主题对象,this就是观察者

observable.addObserver(this);

}

 

@Override

publicvoid update(Observable o, Object arg) {

if(oinstanceof WeatherData){

WeatherDataweatherData = (WeatherData) o;

this.temp= weatherData.getTemp();

this.pressure= weatherData.getPresseure();

}

display();

}

 

publicvoid display(){

System.out.println("temp-->"+temp+"pressure-->"+pressure);

}

 

}

测试类:

public class Test {

publicstatic void main(String args[]){

WeatherDataweatherData = new WeatherData();

CurrentConditationDisplaycc = new CurrentConditationDisplay(weatherData);

 

weatherData.setStatus(11,11);

}

}

总结:

1、被观察者继承Observable,设置改变状态,通知观察者

2观察者实现Observer,初始化被观察者,再把观察者添加到被观察者中。

3、当被观察者发生改变时,观察者就可以实时接收到被观察者改变的信息。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值