定义
定义对象间一种一对多的依赖关系,使得每当一个对象改变状态时,所有依赖它的对象都会得到通知并被自动更新。
使用场景
- 关联行为场景,且关联行为可以拆分。
- 事件多级触发场景。
- 跨系统的消息交换场景,例如:消息队列、事件总线。
Java 代码示例
// Ui 是观察者
public class Ui implements Observer {
@Override
public void update(Observable o, Object arg) {
}
}
// Data 是被观察者
public class Data extends Observable {
public void post(String content) {
setChanged();
notifyObservers(content);
}
}
public class Client {
public static void main(String[] args) {
Data data = new Data();
Ui ui1 = new Ui();
Ui ui2 = new Ui();
data.addObserver(ui1);
data.addObserver(ui2);
data.post("data");
}
}