本文共 1382 字,大约阅读时间需要 4 分钟。
-- Start
观察者模式又被称为发布-订阅<Publish/Subscribe>模式, 它通常应用在用户界面中, 一个典型的例子是当业务对象发生变化时, 通知用户界面, 从而实时刷新数据, 此时用户界面是观察者, 业务数据是被观察者. Java 通过 Observer(观察者) 和 Observable(被观察者) 为我们实现了一个观察者模式的框架, 下面是一个简单的例子.
import java.util.Observable;import java.util.Observer;public class Test { public static void main(String[] args) throws Exception { WeatherData wd = new WeatherData(); wd.addObserver(new WeatherGUI()); // 测试 for (int i = 0; i < 10; i++) { wd.setTemperature(i); } }}// 天气对象 (被观察者)class WeatherData extends Observable { public static String TEMPERATURE = "temperature"; private Integer temperature; // 温度 public Integer getTemperature() { return temperature; } public void setTemperature(Integer newTemperature) { Integer oldTemperature = temperature; temperature = newTemperature; if (oldTemperature != null && newTemperature != null && oldTemperature != newTemperature) { setChanged(); // 设置变化标志位 notifyObservers(TEMPERATURE); // 通知观察者 } }}// 天气GUI(观察者)class WeatherGUI implements Observer { public void update(Observable o, Object arg) { WeatherData wd = (WeatherData) o; if (WeatherData.TEMPERATURE.equals(arg)) { displayTemperature(wd.getTemperature()); // 得到通知后刷新温度 } } // 显示温度 private void displayTemperature(Integer temperature) { System.out.println(temperature); }}
-- 更多参见:
-- 声 明:转载请注明出处 -- Last Updated on 2012-09-13 -- Written by ShangBo on 2012-09-13 -- End