1. 程式人生 > >[設計模式]觀察者模式與訂閱模式

[設計模式]觀察者模式與訂閱模式

維護 模式 自己 基類 調用 系列 -s span 業務

  在讀《設計模式》時,觀察者模式一直理解為訂閱者/發布者 ,其實這兩種模式還是有差異的。

  一、觀察者模式

    相關概念:目標和觀察者是基類,目標提供維護觀察者的一系列方法,觀察者提供更新接口。具體觀察者和具體目標繼承各自的基類,然後具體觀察者把自己註冊到具體目標裏,在具體目標發生變化時候,調度觀察者的更新方法。

    技術分享圖片

  二、訂閱模式

    相關概念:訂閱者把自己想訂閱的事件註冊到調度中心,當該事件觸發時候,發布者發布該事件到調度中心(順帶上下文),由調度中心統一調度訂閱者註冊到調度中心的處理代碼。

    技術分享圖片

  三、異同點

    1.最主要的區別就是觀察者模式中,當目標變化時,是由目標(發布者)去調動註冊者(訂閱者),調用相應處理代碼;在訂閱模式中,是由調度中心統一去註冊訂閱者,當發布者變化時,也是由調度中心去調用訂閱者。相比觀察者模式,訂閱模式更加解耦,而觀察者模式依賴很強;

    2.兩種模式在適當業務場景都可以減少代碼復用

  

[設計模式]觀察者模式與訂閱模式