觀察者模式中主體和觀察者是互相感知的,發布-訂閱模式是借助第三方來實現調度的,發布者和訂閱者之間互不感知
聯系
發布-訂閱模式是觀察者模式的一種變體。發布-訂閱只是把一部分功能抽象成一個獨立的ChangeManager。
意圖
都是某個對象(subject, publisher)改變,使依賴於它的多個對象(observers, subscribers)得到通知。
區別與適用場景
總的來說,發布-訂閱模式適合更復雜的場景。
在「一對多」的場景下,發布者的某次更新只想通知它的部分訂閱者?
在「多對一」或者「多對多」場景下。一個訂閱者依賴於多個發布者,某個發布者更新后是否需要通知訂閱者?還是等所有發布者都更新完畢再通知訂閱者?
這些邏輯都可以放到ChangeManager里。
參考文章:https://juejin.im/post/5a14e9edf265da4312808d86
https://juejin.im/post/5cd81a20e51d453b4558d858