時間:2016-04-19 17:00
地點:新大樓 906
定義
觀察者模式、發布-訂閱模式、模型-視圖模式
狀態改變、主動通知
一對多的關系
一般多功能點聯動的地方都可以使用該模式
貓叫、老鼠跑、主人醒
上課鈴響、學生進教室、老師開始上課
客戶下單成功、給手機發送短信、APP推送通知
點擊提交按鈕、后臺保存數據
動機
要點
(1)被觀察者(主題)
可以通過接口或抽象類提供
(2)觀察者
- 觀察者不是直接調用(迪米特法則)
- 觀察者將自己注冊到被觀察者的容器中時,被觀察者不應該過問觀察者的類型
實例
(1)發報紙
(2)客人付款成功后:
①給客人發送支付成功的通知短信
②給供應商發送預訂傳真
③給預定中心發送做單提醒
④給財務中心發送做單提醒
......
總結
優點:解除了被觀察者和觀察者的耦合,各自的變化不影響對方
缺點:一個類想成為觀察者必須要實現抽象類觀察者接口,如果類無法修改,就沒辦法成為觀察者,依賴關系并未完全解除。
模式引申
事件委托的實現
委托的定義:可看做是對方法的抽象,是方法的類
委托實例是可以多播的
利用委托可以解除接口的依賴
C#中Action和Func的區別:Func可以定義返回參數的類型
加不加event修飾符的區別:不加的話可以直接使用,加的話有權限的才能調用