您的位置:首页 > 编程语言 > Java开发

Java设计模式-观察者模式

2016-12-21 10:28 441 查看

观察者模式

定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新

Java内置支持

java.util库里内置了被观察者(类:Observable)和观察者(接口:Observer)实现,我直接继承Observable和实现Observer来写自己的观察者模式Demo。

被观察者 WeatherData.java(天气检测数据):

import java.util.Observable;

public class WeatherData extends Observable {
private float temperature;// 当前气温
public void onChange(float temp){
this.temperature = temp;
setChanged();// 变更标示
notifyObservers(temperature);// 通知所有注册过的观察者(该方法中会重置变更标示)
}
}


观察者 CurrentConditionsDisplay.java(公告牌):

public class CurrentConditionsDisplay implements Observer {

@Override
public void update(Observable o, Object arg) {
if(arg != null)
display(arg);
}
@Override
public void display(Object arg){
System.out.println("当前温度:"+arg.toString()+" ℃");
}

}


注意这里实现了一个Display接口是为了将显示当前温度的方法抽象出来,接口里只有一个display(Object arg)方法。

测试类 Test.java:

public class Test {

public static void main(String[] args) {
WeatherData weatherData = new WeatherData();
CurrentConditionsDisplay conditionsDisplay = new CurrentConditionsDisplay();
weatherData.addObserver(conditionsDisplay);
weatherData.onChange(9.2f);
weatherData.onChange(-2.2f);
weatherData.onChange(19.2f);
}

}


下面是输出结果:

当前温度:9.2 ℃
当前温度:-2.2 ℃
当前温度:19.2 ℃
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 模式