觀察者模式

觀察者模式(有時又被稱爲發佈-訂閱模式、模型-視圖模式、源-收聽者模式或從屬者模式)是軟件設計模式的一種。
定義:一個目標物件管理全部相依於它的觀察者物件,而且在它自己的狀態改變時主動發出通知。這一般透過呼叫各觀察者所提供的方法來實現。此種模式一般被用來實做事件處理系統

設計模式

 

觀察者設計模式定義了對象間的一種一對多的依賴關係,以便一個對象的狀態發生變化時,全部依賴於它的對象都獲得通知並自動刷新。

性能

 



 

觀察者模式的優勢:設計

1.觀察者增長或刪除無需修改主題的代碼,只需調用主題對應的增長或者刪除的方法便可。對象

2.主題只負責通知觀察者,但無需瞭解觀察者如何處理通知。blog

3.觀察者只需等待主題通知,無需觀察主題相關的細節。事件

4.因爲被動接受,正常狀況下不會錯過主題的改變通知。而主動獲取的話,因爲時機選取問題,可能致使錯過某些狀態。軟件

缺點:垃圾回收

1.主題持有觀察者的引用,若是未正常處理從主題中刪除觀察者,會致使觀察者沒法被回收。循環

2.若是觀察者具體實現代碼有問題,會致使主題和觀察者對象造成循環引用,在某些採用引用計數的垃圾回收器可能致使沒法回收。引用


觀察者模式

  1. 本質:依賴觸發聯動——觀察者和觀察對象信息鬆散耦合,實時更新。
  2. 優勢:動態聯動、部分耦合、支持廣播
  3. 缺點:性能浪費(不肯定是否是全部觀察者都須要信息)
  4. 使用場景:
    1. 一個抽象模型由兩個方面構成,其中一個方面的操做依賴另一個方面的狀態的變化。
    2. 更改一個對象的同時須要連帶更改其餘對象,而不知道有多少對象是須要被連帶改變的。
    3. 一個對象必須通知其餘對象,你又但願這些對象之間鬆散耦合。



  http://www.imooc.com/article/12017

  http://www.imooc.com/article/11579

相關文章
相關標籤/搜索