学习
实践
活动
工具
TVP
写文章

一键生成MVP代码

序言

每个程序员看到一堆烂代码都有一颗重构的心。烂代码写起来嘴上 笑嘻嘻,心里mmp。特别是有代码洁癖的人。重构不易且行且珍惜,此框架将减少开发时间。如果你们的项目结构跟我的不一样,这也不用担心,你看了我这个,简单修改一下模板,照样能生成你想要的代码。

MVP架构

相信大家对于MVP耳熟能详了,理解的直接往下看,如果概念比较模糊,可以网上查一查理解理解,我这边简单的介绍一下,可以配合下图来理解

View层:View层也是视图层,只负责对数据的展示,提供友好的界面与用户进行交互。开发中通常将Activity或者Fragment作为View层。

Model层:Model层也是数据层。它区别于MVC架构中的Model,在这里Model它负责对数据的存取操作,例如对数据库的读写,网络的数据的请求等。

Presenter层:是连接View层与Model层的桥梁并对业务逻辑进行处理。在MVP架构中Model与View无法直接进行交互。所以在Presenter层它会从Model层获得所需要的数据,进行一些适当的处理后交由View层进行显示。这样通过Presenter将View与Model进行隔离,使得View和Model之间不存在耦合,同时也将业务逻辑从View中抽离

项目介绍

项目采用MVP架构,使用RxAndroid2+Retrofit开源框架封装,结合Android Studio模板快速生成MVP基础代码。新项目或者重构项目值得拥有。此开发框架是我2017年底重构项目开发的,使用了几个月,项目重构完成了,完美使用,特别省事省时省心

项目结构

代码详解1.api-网络请求

Retrofit网络请求封装,项目里面只是对Retrofit网络请求基本参数,需要header、cache等参数,可在网上查查资料,这类文章介绍很多。Retrofit 2.0使用文档

DevMvpApi -Retrofit初始化

DevMvpService-接口管理 这边直接使用BookBean对象接收返回值

2.contract-契约类,v层和p层接口管理

CBook-测试契约类 Contract用于存放mvp三层接口类 放在一起便于管理,不用生成太多的类(因为model没有需要处理的数据,所以没有使用接口,可自行生成实现)

3.model-M层

BaseModel-M层基类 网络请求初始化和网络请求取消处理

MBookImpl-M层数据处理 由于不需要对数据进行处理,我就直接返回给P层,如果数据可能会从数据库、缓存、网络获取,需要在这里进行处理。

4.presenter-P层

BasePresenter-P层基类 连接V层和M层

PBookImpl-P层业务逻辑处理

5.view-V层

BaseActivity-V层基类(BaseFragment类似) 在基类跟P层建立连接,这里可以根据项目需求丰富BaseActivity。这里只把添加基础必备功能。

BookActivity-V层页面渲染处理 V层只需要操作页面控件,网络数据显示到页面上等等。

基础设置模板详解(Fragment类似)

template.xml-创建模板页面设置

这里主要设置模板名称、分类、生成模板需要填写的信息等等

Mvp基础代码生成设置详解

PS.声明只针对于Activity,Fragment不需要此文件

一键生成MVP基础代码

copy项目下的MvpActivity文件夹到Android Studio安装目录 例:C:\Android\Android Studio 3.0 release\plugins\android\lib\templates\activities文件夹下.

MvpFragment 的路径是 C:\Android\Android Studio 3.0 release\plugins\android\lib\templates\other

重启Android Studio。

重启Android Studio之后,选中包名路径

生成MvpActivity基础代码(MvpFragment可选中Fragment里面生成)

依赖库使用

将所有依赖的版本控制提取到根目录下的config.gradle做统一管理

supportVersion : "26.1.0"

retrofit : "2.2.0",

rxjava : "2.0.1",

rxandroid : "2.0.1",

okhttp3 : "3.4.1",

constraint_layout: "1.0.2",

rxjava2_adapter : "1.0.0",

logging : "3.4.0-RC1",

butterknife : "8.8.1",

意见反馈

如果觉得还行的话,赞一下吧! 谢谢啦!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180607G09F1K00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注腾讯云开发者

领取腾讯云代金券