定義
定義對象間的一種一對多的依賴關(guān)系,當(dāng)一個對象的狀態(tài)發(fā)生改變時,所有依賴于它的對象都得到通知并被自動更新。
Observer模式描述了如何建立這種關(guān)系。這一模式中的關(guān)鍵對象是目標(biāo)(subject)和觀察者(observer)。一個目標(biāo)可以有任意數(shù)目的依賴它的觀察者。一旦目標(biāo)的狀態(tài)發(fā)生改變,所有的觀察者都得到通知。這種交互也稱為發(fā)布-訂閱(publish-subscribe)。目標(biāo)是通知的發(fā)布者。故觀察者模式又名 依賴(Dependents),發(fā)布-訂閱(Publish-Subscribe)。
適用場景
以下任何一種情況可以使用觀察者模式:
當(dāng)一個抽象模型有兩個方面,其中一個方面依賴于另一個方面。將這兩者封裝在獨立的對象中以使它們可以各自獨立地改變和復(fù)用。
當(dāng)對一個對象的改變需要同時改變其它對象,而不知道具體有多少對象有待改變。
當(dāng)一個對象必須通知其它對象,而它又不能假定其它對象是誰。換言之,你不希望這些對象是緊密耦合的。
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動安全 [無線安全]玩轉(zhuǎn)無線電——不安全的藍(lán)牙鎖 2017-07-26
- 消息隊列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來看看(二) 2017-07-26