Java设计模式-观察者模式

来源:互联网 发布:极客营销软件 编辑:程序博客网 时间:2024/05/29 05:02

观察者模式

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

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
0 0
原创粉丝点击