天天看點

kotlin跟java混編_Android MVP 架構搭建 - 支援Java、Kotlin混編

kotlin跟java混編_Android MVP 架構搭建 - 支援Java、Kotlin混編

鼬神鎮樓

MVPKotlin

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

kotlin跟java混編_Android MVP 架構搭建 - 支援Java、Kotlin混編

Kotlin-MVP.gif

視訊示範

掃碼檢視Demo App:

kotlin跟java混編_Android MVP 架構搭建 - 支援Java、Kotlin混編

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架構圖

kotlin跟java混編_Android MVP 架構搭建 - 支援Java、Kotlin混編

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

kotlin跟java混編_Android MVP 架構搭建 - 支援Java、Kotlin混編

Model.png

代碼示例

Kotlin MVP Auto 插件

我們知道View、Presenter、Model、Constact需要編寫固定的套路代碼來進行關聯,比如內建某一個Base類,實作某個固定接口。

為了提高開發效率,配合該MVP庫專門為開發者提供Kotlin MVP Auto插件來幫你統統搞定。

安裝插件

操作: File -> Settings -> Plugins -> Kotlin MVP Auto -> install

kotlin跟java混編_Android MVP 架構搭建 - 支援Java、Kotlin混編

plugin_install.png

功能示範

自動生成View、Presenter、Model、Contract Kotlin檔案

操作:包目錄右鍵 -> New MVP Kotlin -> 輸入子產品名稱 -> OK

kotlin跟java混編_Android MVP 架構搭建 - 支援Java、Kotlin混編

Kotlin-MVP.gif

自動生成View、Presenter、Model、Contract Java檔案

操作:包目錄右鍵 -> New MVP Java -> 輸入子產品名稱 -> OK

Demo App 截圖

kotlin跟java混編_Android MVP 架構搭建 - 支援Java、Kotlin混編

anim.gif