時(shí)間:2016-04-19 17:00
地點(diǎn):新大樓 906
定義
觀察者模式消痛、發(fā)布-訂閱模式咏尝、模型-視圖模式
狀態(tài)改變、主動(dòng)通知
一對(duì)多的關(guān)系
一般多功能點(diǎn)聯(lián)動(dòng)的地方都可以使用該模式
貓叫器联、老鼠跑蕉世、主人醒
上課鈴響、學(xué)生進(jìn)教室狭姨、老師開始上課
客戶下單成功宰啦、給手機(jī)發(fā)送短信、APP推送通知
點(diǎn)擊提交按鈕送挑、后臺(tái)保存數(shù)據(jù)
動(dòng)機(jī)
要點(diǎn)
(1)被觀察者(主題)
可以通過接口或抽象類提供
(2)觀察者
- 觀察者不是直接調(diào)用(迪米特法則)
- 觀察者將自己注冊到被觀察者的容器中時(shí)绑莺,被觀察者不應(yīng)該過問觀察者的類型
實(shí)例
(1)發(fā)報(bào)紙
(2)客人付款成功后:
①給客人發(fā)送支付成功的通知短信
②給供應(yīng)商發(fā)送預(yù)訂傳真
③給預(yù)定中心發(fā)送做單提醒
④給財(cái)務(wù)中心發(fā)送做單提醒
......
總結(jié)
優(yōu)點(diǎn):解除了被觀察者和觀察者的耦合,各自的變化不影響對(duì)方
缺點(diǎn):一個(gè)類想成為觀察者必須要實(shí)現(xiàn)抽象類觀察者接口惕耕,如果類無法修改纺裁,就沒辦法成為觀察者,依賴關(guān)系并未完全解除司澎。
模式引申
事件委托的實(shí)現(xiàn)
委托的定義:可看做是對(duì)方法的抽象欺缘,是方法的類
委托實(shí)例是可以多播的
利用委托可以解除接口的依賴
C#中Action和Func的區(qū)別:Func可以定義返回參數(shù)的類型
加不加event修飾符的區(qū)別:不加的話可以直接使用,加的話有權(quán)限的才能調(diào)用