Observer(观察者)--对象行为型模式
Observer(觀察者)–對象行為型模式
一、意圖
定義對象間的一種一對多的依賴關系,當一個對象的狀態發生變化時,所有的依賴于它的對象都得到通知并被自動更新。
二、動機
1.在軟件構建過程中,我們需要為某些對象建立一種“通知依賴關系” ——一個對象(目標對象)的狀態發生改變,所有的依賴對象(觀察者對象)都將得到通知。如果這樣的依賴關系過于緊密, 將使軟件不能很好地抵御變化。
2.使用面向對象技術,可以將這種依賴關系弱化,并形成一種穩定的依賴關系。從而實現軟件體系結構的松耦合。
三、適用性
1.當一個抽象模型有兩個方面,其中一個方面依賴于另一個方面。將這二者封裝在獨立的對象中以使他們可以各自獨立地改變和復用。
2.當一個對象的改變需要同時改變其他對象,而不知道具體有多少對象有待改變。
3.當一個對象必須通知其他對象,而它又不能假定其他對象是誰。換言之,你不希望這些對象是緊密耦合的。
四、結構
五、效果
1.目標和觀察者間的抽象耦合。
2.支持廣播通信。
3.意外的更新。
六、實現
1.創建目標到其他觀察者之間的映射。
2.觀察多個目標。
3.誰觸發更新。
4.對已刪除目標的懸掛引用。
5.在發出通知前確保目標的狀態自身是一致的。
6.避免特定于觀察者的更新協議——推、拉模型
7.顯式地指定感興趣的改變。
8.封裝復雜的更新語義。
9.結合目標類和觀察者類。
七、要點總結
1.使用面向對象的抽象,Observer模式使得我們可以獨立地改變目標與觀察者,從而使二者之間的依賴關系達致松耦合。
2.目標發送通知時,無需指定觀察者,通知(可以攜帶通知信息作為參數)會自動傳播。
3.觀察者自己決定是否需要訂閱通知,目標對象對此一無所知。
4.Observer模式是基于事件的UI框架中非常常用的設計模式,也是 MVC模式的一個重要組成部分。
八、相關模式
Mediator:通過封裝復雜的更新語義,ChangManager充當目標和觀察者之間的中介者。
Singleton:ChangeManager可使用Singleton模式來保證它是唯一的并且可全局訪問的。
九、舉例說明
把你們家電總閘關了,所有的電器都不工作了(有帶備用電池的除外),他們都是一個個觀察者。
本文為李建忠設計模式視頻的筆記以及《設計模式-可復用面向對象的軟件的基礎》和自己的部分見解
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的Observer(观察者)--对象行为型模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微信公众号口令红包怎么发? 微信公众号发
- 下一篇: 常见的电脑自动重启原因以及解决办法如何提