天天看點

Android MVP架構,android-architecture

作為一個android開發中,必須熟悉常見的架構,并區分MVC,MVP,MVVM。Google在2016年3月份推出了Android MVP架構的各種組合,學習價值極高,建議下載下傳回來撸代碼。官方MVP項目的Github位址是:

https://github.com/googlesamples/android-architecture

另外推薦一篇博文:

教你認清MVC,MVP和MVVM

本文主要介紹下官方的MVP架構Demo項目。

一,Google MVP 項目有哪些?

1,目前已有的開源項目:

todo-mvp(mvp基礎架構示例)

todo-mvp-loaders(基于mvp基礎架構項目,擷取資料部分使用了Loaders架構)

todo-mvp-databinding(基于mvp基礎架構項目,使用了資料綁定元件)

2,仍在完善中的開源項目:

todo-mvp-contentproviders(基于mvp基礎架構項目,使用了Content Providers)

todo-mvp-clean(基于mvp基礎架構項目,使用了clean架構的概念)

todo-mvp-dagger(基于mvp基礎架構項目,使用了dagger2進行依賴注入)

二,官方todo-MVP項目的實作方式

官方示例實作mvp的總體的輪廓,關于項目中業務代碼我們僅列出了任務詳情頁(taskDetail)的相關類,其他業務代碼類似.

mvp實作了三層架構

Android MVP架構,android-architecture

三,測試相關元件

1,示例項目的測試方面。

對視圖邏輯(view層)和業務邏輯(presenter層)進行了拆分,可以對UI、業務代碼分别進行測試。

P層:不需要任何Android環境,是以使用Junit測試即可

V層:使用Google強大的Espresso進行UI的測試

M層:涉及到資料庫相關操作,是以需要依賴Android環境,使用AndroidJUnitRunner進行測試

2,關于單元測試,需要預先了解以下内容:

junit:對業務層進行單元測試。

Android Studio的test和AndroidTest:官方測試架構

AndroidJUnitRunner:一個相容Junit4的Andriod單元測試架構。

Mockito:生成測試mock對象,單元測試利器。

Espresso:進行UI測試。

dexmaker:支撐mockito。

hamcrest:可讀性更高,更加靈活,測試代碼的比對更接近自然語言。

四,todo項目結構

1,view層:負責UI展示,包含了三個子產品:待辦事項清單子產品,待辦事項詳情子產品,統計子產品。

Android MVP架構,android-architecture
Android MVP架構,android-architecture

2,presenter層:調用presenter代碼來處理業務邏輯

Android MVP架構,android-architecture

3,model層:存取資料。和presenter互動,脫離view

Android MVP架構,android-architecture

MVP模式下,View層做的事情都能做了,如UI布局,資料渲染,點選按鈕互動等。

activity在項目中是一個全局的控制者,負責建立view以及presenter執行個體,并将二者聯系起來。

需要界面做對應的變化,presenter直接調用view層的方法即可。

執行個體中,資料的擷取、存儲、資料狀态變化都是model層的任務,presenter會根據需要調用該層的資料處理邏輯并在需要時将回調傳入。這樣model、presenter、view都隻處理各自的任務。

五,總結

實際的項目中應用了,有些時候想用MVP的,官方的demo的确提供了一個很好的參考。MVC,MVP和MVVM都需要了解。

UI代碼與業務代碼分離,不再像之前的activity那麼臃腫。如此,UI層和業務層可以分别進行單元測試;雖然代碼量可能增加,但各個類職責都非常明确,各司其職,後期的擴充,維護都會更加容易。

杜乾,Dusan,291902259,歡迎交流。