登录

去注册

登录

注册

去登录

注册

解锁回答区域

  • 扫码关注公众号
  • 发送“我爱安卓

若你登陆,将永久解锁;
若未登录,仅本机解锁。

解锁回答区域

Kotlin-MVP架构 - 支持Kotlin&Java混编、支持代码自动生成

cn-ljb   2019-07-23 16:18   收藏

MVPKotlin

快捷、高效、低耦合的Android MVP架构,支持Java、Kotlin混编。

视频演示

[高清视频,点击这里]

扫码查看Demo App:

集成方式

  • 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.1'
//dao lib
implementation 'com.github.cn-ljb:daolib:1.0.1'

lib源码:kotlin-mvp-libnet-libdao-lib

概述

为什么要使用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架构图

特点

  • 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 MVP Auto 插件

我们知道View、Presenter、Model、Constact需要编写固定的套路代码来进行关联,比如集成某一个Base类,实现某个固定接口。

为了提高开发效率,配合该MVP库专门为开发者提供Kotlin MVP Auto插件来帮你统统搞定。

安装插件

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

插件演示

  • 自动生成View、Presenter、Model、Contract Kotlin文件

操作:包目录右键 -> New MVP Kotlin -> 输入模块名称 -> OK

  • 自动生成View、Presenter、Model、Contract Java文件

操作:包目录右键 -> New MVP Java -> 输入模块名称 -> OK

Demo App 截图

anim.gif

项目地址:https://github.com/cn-ljb/mvp-kotlin