-- 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);
}
}
-- 更多参见:Java 精萃
-- 声 明:转载请注明出处
-- Last Updated on 2012-09-13
-- Written by ShangBo on 2012-09-13
-- End