設計模式——觀察者模式

時間:2016-04-19 17:00
地點:新大樓 906

定義

觀察者模式、發布-訂閱模式、模型-視圖模式
狀態改變、主動通知
一對多的關系
一般多功能點聯動的地方都可以使用該模式
貓叫、老鼠跑、主人醒
上課鈴響、學生進教室、老師開始上課
客戶下單成功、給手機發送短信、APP推送通知
點擊提交按鈕、后臺保存數據

動機

要點

(1)被觀察者(主題)
可以通過接口或抽象類提供
(2)觀察者

  • 觀察者不是直接調用(迪米特法則)
  • 觀察者將自己注冊到被觀察者的容器中時,被觀察者不應該過問觀察者的類型

實例

(1)發報紙
(2)客人付款成功后:
①給客人發送支付成功的通知短信
②給供應商發送預訂傳真
③給預定中心發送做單提醒
④給財務中心發送做單提醒
......

總結

優點:解除了被觀察者和觀察者的耦合,各自的變化不影響對方
缺點:一個類想成為觀察者必須要實現抽象類觀察者接口,如果類無法修改,就沒辦法成為觀察者,依賴關系并未完全解除。

模式引申

事件委托的實現
委托的定義:可看做是對方法的抽象,是方法的類
委托實例是可以多播的
利用委托可以解除接口的依賴

C#中Action和Func的區別:Func可以定義返回參數的類型

加不加event修飾符的區別:不加的話可以直接使用,加的話有權限的才能調用

附件

源碼

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容