一、什么是观察者模式
【待续】
二、Java提供的观察者模式
Java提供了一个Observable类,顾名思义可知“可观察的”。当你有一个类需要被观察时,需要继承此类。
Java还提供了一个Observer接口,顾名思义可知“观察者”。当你有一个类需要观察别的类时,需要实现此接口。
三、如何使用Java提供的观察者模式
假设现在你有一个WeatherData的类,他是一个被观察的类,实例化后里面存储着测量到的天气数据{T,H,P},每当天气数据变化时,里面的数据也会变。
import java.util.Observable;
public class WeatherData extends Observable {
private String T;
private String H;
private String P;
public WeatherData() {
}
}
现在你还有一个观察者类StatisticsDisplay,负责检测WeatherData 里的数据{T,H},每当T,H改变时,StatisticsDisplay就输出更新后的值。
import java.util.Observable;
import java.util.Observer;
public class StatisticsDisplay implements Observer{
private String T;
private String H;
@Override
public void update(Observable o, Object arg) {
if (o instanceof WeatherData) {
WeatherData weatherData = (WeatherData) o;
this.T = weatherData.getT();
this.H = weatherData.getH();
this.toString();
}
}
@Override
public String toString() {
final StringBuilder sb = new StringBuilder( "{" );
sb.append( "\"T\":\"" )
.append( T