设计模式-观察者模式
-
定义
观察者模式定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新 -
说明
观察者需要向主题注册,主题持有所有观察者的实例引用。 -
代码实例
import java.util.Observable; import java.util.Observer; /** * 主题实现 */ class WeatherData extends Observable { private int num; public WeatherData() { } public void update() { setChanged(); notifyObservers(); } public void setNum(int num) { this.num = num; update(); } public int getNum() { return num; } } /** * 观察者实现 */ class BlackBoard implements Observer { private int num; // 在构造器中向主题注册观察者 public BlackBoard(Observable observable) { observable.addObserver(this); } @Override public void update(Observable o, Object arg) { this.num = ((WeatherData) o).getNum(); System.out.println(toString()); } @Override public String toString() { return "BlackBoard{" + "num=" + num + '}'; } // 测试 public static void main(String[] args) { WeatherData weatherData = new WeatherData(); Observer observer1 = new BlackBoard(weatherData); Observer observer2 = new BlackBoard(weatherData); weatherData.setNum(10); weatherData.setNum(20); } }