android設計模式之--觀察者模式

   最近比較忙,好久沒有更新博客了,今天就將最近研究的一個東西總結一下,最近在維護公司的一個項目,我負責的模塊主要是下載雜誌後及時的更新UI,將最新的下載進度更新到UI上,中間遇到的一個問題是:同一個對象的下載進度會有多個Item監聽它的狀態,也就是說一個進度要更新到多個Item上,開始沒有什麼頭緒,百度一番後發現了觀察者模式這個東西,它就是爲了滿足這種一對多問題而出現的.

   有了思路以後,就着手開始瞭解觀察者模式是如何工作的,雖然以前知道設計模式裏有這個東西,但還真是沒用過,下面就講解一下觀察者模式如何在項目中實際應用.先看一下應用在項目中的效果:

   

   如圖:同一本書在書店頁與書架頁的下載進度是要完全一樣的,我們可以用觀察者模式達到這種效果.

  1.觀察者模式包含的內容:觀察者模式中主要有觀察者和被觀察者兩種對象,被觀察者主要實現數據或狀態的更新,有更新後通知所有的觀察者,而觀察者則主要負責收到通知後,去更新自己所關注的內容.

  2.觀察者模式的使用步驟:1)創建一個 Subject(主題接口),接口中有被觀察者要實現的所有功能;2)創建一個觀察者接口,所有實現了此接口功能的,都被稱爲觀察者,3)將所有實現了觀察者接口的觀察者都註冊到被觀察者中.4)被觀察者通過遍歷所有的觀察者對象,調用其實現的觀察者接口方法.(就是一個接口的回調過程)

  只要實現了以上四個步驟就成功的創建一個觀察者模式,下面是我項目中用到觀察者模式的框架結構:

  1.創建一個Subject主題接口,定義了被觀察者的功能.如圖:

 

   這裏定義了被觀察者的功能和添加,刪除觀察者..

  2.創建一個被觀察者對象,實現此主題接口功能

  

     此處,我省略了項目裏其它的代碼,只留下一個框架結構.這樣我們的被觀察者類就創建好了.

    3.創建觀察者接口,定義好觀察者要實現的功能.

    

     4.創建我們的觀察者類,如圖:

      實現了我們定義好的觀察者接口即成爲一個觀察者.

     至此,整個觀察者模式的框架就搭建完成,只要在對應的類中實現我們要的業務邏輯即可.

    

    總結: 1.觀察者模式是一個非常重要的設計模式,從android系統的設計就可以看的出,系統的設計本身就使用了非常多的觀察者模式,例如 : View的事件監聽機制,ContentProvider 的 ContentObserver, BaseAdapter的設計,可見,觀察者模式是十分重要的,是我們必須掌握的.2.掌握觀察者模式的前提是必須熟練使用接口回調,觀察者模式其實就是一個複雜的接口回調.

   

發佈了66 篇原創文章 · 獲贊 59 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章