首页/开发/代码质量与评审速查/观察者模式 Observer(行为型)
设计原则与模式62 条

观察者模式 Observer(行为型)

一对多依赖:主题状态变化时通知所有订阅者(推送或拉取);事件总线、监听器、响应式流都是它的形态;注意退订、异常隔离与通知顺序。

意图状态变更 → 广播通知
形态推送(带数据)/拉取(通知后自取)
工程要点退订、异常隔离、顺序与幂等

Java 示例

Java 示例
interface Listener { void onEvent(Event e); }

class Topic {
    private final List<Listener> listeners = new CopyOnWriteArrayList<>();
    void subscribe(Listener l) { listeners.add(l); }
    void publish(Event e) {
        for (Listener l : listeners) l.onEvent(e);
    }
}

易错点

  • 监听器忘记退订:内存泄漏与幽灵回调
  • 通知链无异常隔离:一个订阅者抛错拖垮整条广播

数据来源与参考

  • 《设计模式》(GoF)· Observer
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌