观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。当这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能够自动更新自己。即被观察者改变会自动通知观察者,观察者根据被观察者的变化进行一系列操作。
大概步骤:
1. 创建被观察者, (继承java.util.Observable),在发生改变的地方必须调用
setChanged();//为什么需要调用这两个方法?等下讲原理的时候会提到
notifyObservers();//只有先调用setChanger()后这个才会通知观察者
//也可以是notifyObservers(Object obj);这个是实现带参数的通知,这个参数传递给观察者里的void update(Observable o, Object arg) 方法里的arg参数。
2. 创建观察者,(实现java.util.Observer)
3. 客户端调用时被观察者增加观察者被观察者.addOberver(观察者) ,多个可以增加多次
好了直接看个例子会更好的理解:
例子是这样的一个嫌疑犯生活在厦门,厦门公安甚至国安局都会对他的动向进行观察、跟踪。
//嫌疑犯 被参观者 需要继承Observable
public class Suspect extends Observable{
private St