设计模式 | 观察者模式

86 阅读1分钟

定义

定义对象间一种一对多的依赖关系,使得每当一个对象改变状态时,所有依赖它的对象都会得到通知并被自动更新。

使用场景

  • 关联行为场景,且关联行为可以拆分。
  • 事件多级触发场景。
  • 跨系统的消息交换场景,例如:消息队列、事件总线。

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");
    }
}