Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android官方MVP架構示例項目解析[轉載]

Android官方MVP架構示例項目解析[轉載]

編輯:關於Android編程

項目MVP實現方式

這節我們就具體來看官方示例到底是如何實現mvp的。這裡我們先看下總體的輪廓,關於項目中業務代碼我們僅列出了任務詳情頁(taskDetail)的相關類,其他業務代碼類似。

 

這裡寫圖片描述

 

基類

我們首先來看兩個Base接口類,BasePresenter與BaseView,兩類分別是所有Presenter與View的基類。

 

這裡寫圖片描述

 

BasePresenter中含有方法start(),該方法的作用是presenter開始獲取數據並調用view中方法改變界面顯示,其調用時機是在Fragment類的onResume方法中。

 

這裡寫圖片描述

 

BaseView中含方法setPresenter,該方法作用是在將presenter實例傳入view中,其調用時機是presenter實現類的構造函數中。

契約類

與筆者之前見到的所有mvp實現都不同,官方的實現中加入了契約類來統一管理view與presenter的所有的接口,這種方式使得view與presenter中有哪些功能,一目了然,維護起來也方便,實例如下

 

這裡寫圖片描述

 

activity在mvp中的作用

activity在項目中是一個全局的控制者,負責創建view以及presenter實例,並將二者聯系起來,下面是activity中創建view及presenter的代碼

 

這裡寫圖片描述

 

我們可以從上面看到整個創建過程,而且要注意的是創建後的fragment實例作為presenter的構造函數參數被傳入,這樣就可以在presenter中調用view中的方法了。

mvp的實現與組織

實例中將fragment作為view層的實現類,為什麼是fragment呢?有兩個原因,第一個原因是我們把activity作為一個全局控制類來創建對象,把fragment作為view,這樣兩者就能各司其職。第二個原因是因為fragment比較靈活,能夠方便的處理界面適配的問題。我們先看view的實現,我們只挑一部分重要的方法來看

 

這裡寫圖片描述

 

上面可以看到setPresenter方法,該方法繼承於父類,通過該方法,view獲得了presenter得實例,從而可以調用presenter代碼來處理業務邏輯。我們看到在onResume中還調用了presenter得start方法,下面我們再看presenter的實現

 

這裡寫圖片描述

 

presenter構造函數中調用了view得setPresenter方法將自身實例傳入,start方法中處理了數據加載與展示。如果需要界面做對應的變化,直接調用view層的方法即可,這樣view層與presenter層就能夠很好的被劃分。

最後還剩下model層實現,項目中model層最大的特點是被賦予了數據獲取的職責,與我們平常model層只定義實體對象截然不同,實例中,數據的獲取、存儲、數據狀態變化都是model層的任務,presenter會根據需要調用該層的數據處理邏輯並在需要時將回調傳入。這樣model、presenter、view都只處理各自的任務,此種實現確實是單一職責最好的诠釋。

總結

到這裡我們就基本分析完了,我們再來整體看下官方的實現方式有哪些特性。

首先是復雜度,我們可以從上面的分析看出整體的復雜度還是較低的,易學的;然後是可測試性,由於將UI代碼與業務代碼進行了拆分,整體的可測試性非常的好,UI層和業務層可以分別進行單元測試;最後是可維護性和可擴展性,由於架構的引入,雖然代碼量有了一定的上升,但是由於界限非常清晰,各個類職責都非常明確且單一,後期的擴展,維護都會更加容易。有了這個架構之後,我們再回頭看下之前的實現是不是有很多不足,沒有關系,那麼接下來就是在項目中進行實踐的時間了。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved