
鼬神鎮樓
MVPKotlin
快捷、高效、低耦合的Android MVP架構,支援Java、Kotlin混編。

Kotlin-MVP.gif
視訊示範
掃碼檢視Demo App:

qrcode.png
內建方式
1、Project的build.gradle檔案添加如下代碼:
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
2、主Module的build.gradle添加依賴:
//mvp core
implementation 'com.github.cn-ljb:kotlin-mvp-lib:1.2.0'
//網絡庫lib、資料庫lib 根據項目實際情況引入
//net lib
implementation 'com.github.cn-ljb:netlib:1.0.0'
//dao lib
implementation 'com.github.cn-ljb:daolib:1.0.0'
概述
為什麼要使用MVP架構?
通常Android項目結構中,我們會在Activity\Fragment中編寫大量代碼,例如:網絡請求、IO操作、資料填充、頁面切換等,這種項目結構宏觀的稱之為MVC。
MVC:我們可以把資料源(網絡請求、IO...)看作Model層,xml等布局檔案看作View層,Activity\Fragment看作Controller層。但在android中xml能力太薄弱了,以至于Activity做了很多本不屬于它的工作。
MVP:在MVP架構中Model層與MVC一樣存放資料源(網絡請求、IO...),将Activity\Fragment都看作為View層,僅負責UI展示和資料填充,将Model層與View層的互動操作交給Presenter層。
MVP架構圖

mvp.png
特點
1、V層由Activity和Fragmen組成,且僅負責UI展示、資料填充等工作,分工明确;
2、M層完全與V層隔離,P層作為V層與M層的橋梁,承擔中間人角色(V通過P擷取M資料);
3、V層與P層對象互相持有,通過Constract限制兩者的通路域,降低耦合;
4、P層持有M層對象,通過Constract限制P層可通路域,降低耦合;
擴充
考慮到實際項目中Model層主要操作是net和db,為了統一調用api,對net和db進行了封裝,通過Factory.getProtocol()産出具體的操作執行個體。
net-lib: rxjava2 + rxAndroid + okhttp3 + retrofit2
dao-lib: rxjava2 + rxAndroid + sqlite

Model.png
代碼示例
Kotlin MVP Auto 插件
我們知道View、Presenter、Model、Constact需要編寫固定的套路代碼來進行關聯,比如內建某一個Base類,實作某個固定接口。
為了提高開發效率,配合該MVP庫專門為開發者提供Kotlin MVP Auto插件來幫你統統搞定。
安裝插件
操作: File -> Settings -> Plugins -> Kotlin MVP Auto -> install

plugin_install.png
功能示範
自動生成View、Presenter、Model、Contract Kotlin檔案
操作:包目錄右鍵 -> New MVP Kotlin -> 輸入子產品名稱 -> OK

Kotlin-MVP.gif
自動生成View、Presenter、Model、Contract Java檔案
操作:包目錄右鍵 -> New MVP Java -> 輸入子產品名稱 -> OK
Demo App 截圖

anim.gif