設計模式(九)——Observer 模式

理解:

        觀察者模式,剛接觸的時候,感覺這是一個十分有創意的模式。能夠採用這種 “訂閱---發佈”的方式去將對象解耦。考慮到某個對象的改變比如一個表格改變的同時,與之關聯的各種圖形界面或者分析數據都需要改變,而如果讓表格去通知各個對象,違背了“一個對象,一個職責”的原則。於是,添加一個第三方,即作爲存儲數據的第三方。當表格的變動導致了數據的改變,存儲數據的對象便能夠通知各個應該改編的對象(觀察者),使之做出相應的調整。並且,後續的需要監聽該subject的observer可以很方便的通過向改subject註冊,進行監聽。

但是,這個方式當動作發生時,會不加區別的去通知每個觀察者。這樣,觀察者可能會不得不獲得一些多餘的信息。解決這個問題有幾種方案:1、使用策略模式,每個觀察者都提供給subject自己的strategy對象,讓subject測試是否應該向其發送通知。2、僅向observer發送簡單的通知,讓observer用pull的方式進行信息獲取,而非僅僅將信息push給observer。


缺點:

  信息的不加選擇的push,可能會導致本應該一系列狀態完成後才做的操作,過於頻繁的進行。影響了效率。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章