設計模式學習總結——觀察者模式

來源:互聯網
上載者:User

標籤:android   style   blog   http   java   art   re   c   

觀察者模式將觀察者(訂閱)和被觀察者(發布)分離,實現了代碼的松耦合;且定義了一對多的依賴關係,讓多個觀察者同事監聽一個被觀察者,同時一個被觀察者能通知多個觀察者更新。


角色:

抽象主題(Subject):又叫抽象被觀察者(Observable),定義一個介面可以增加和刪除觀察者對象。

抽象觀察者(Observer):為所有的具體觀察者定義一個借口,做更新操作。

具體主題(Concrete Subject):實現抽象主題介面,將所有的觀察者對象的引用儲存到一個列表中。當狀態發生改變時,通知清單中的觀察者。又稱具體被觀察者。

具體觀察者(Concrete Observer):實現抽象觀察者介面,每個具體觀察者更具具體情況實現。

Android開發中,ContentObserver,setOnClickListener,以及自訂的介面(在Activity中Implements, 傳入到非同步任務,當任務完成後,調用介面函數重新整理Activity頁面)等都是觀察者很好的例子。


而Java本身提供了對觀察者模式的支援,java.util庫中提供了如下兩個類:


Observer介面,作為抽象觀察者,只定義了一個介面方法update(),每個具體觀察者單獨實現。
Observable類,可以作為抽象被觀察者或者具體被觀察者,因為這個類而非介面,內部實現已經能滿足具體被觀察者的要求。當然也能繼承並擴充此類。Observable類提供了兩個重要方法:setChanged(),用於設定內部標誌位,標示被觀察者發生變化;notifyObservers(),用於調用列表中所有觀察者的update()方法,觀察者做更新操作。


參考資料:http://www.blogjava.net/supercrsky/articles/202544.html

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.