Android MVP架构,android-architecture
来源:互联网 发布:linux断点续传工具 编辑:程序博客网 时间:2024/06/07 18:10
作为一个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实现了三层架构
三,测试相关组件
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展示,包含了三个模块:待办事项列表模块,待办事项详情模块,统计模块。
2,presenter层:调用presenter代码来处理业务逻辑
3,model层:存取数据。和presenter交互,脱离view
MVP模式下,View层做的事情都能做了,如UI布局,数据渲染,点击按钮交互等。
activity在项目中是一个全局的控制者,负责创建view以及presenter实例,并将二者联系起来。
需要界面做对应的变化,presenter直接调用view层的方法即可。
实例中,数据的获取、存储、数据状态变化都是model层的任务,presenter会根据需要调用该层的数据处理逻辑并在需要时将回调传入。这样model、presenter、view都只处理各自的任务。
五,总结
实际的项目中应用了,有些时候想用MVP的,官方的demo的确提供了一个很好的参考。MVC,MVP和MVVM都需要了解。
UI代码与业务代码分离,不再像之前的activity那么臃肿。如此,UI层和业务层可以分别进行单元测试;虽然代码量可能增加,但各个类职责都非常明确,各司其职,后期的扩展,维护都会更加容易。
杜乾,Dusan,291902259,欢迎交流。
- Android MVP架构,android-architecture
- mvp part1 android-mvp-architecture
- MVP Architecture on Android
- 【android-architecture】todo-mvp
- Android-Architecture之todo-mvp
- Android Architecture Components+MVP 实战
- Android官方mvp说明——Android架构蓝图——android Architecture Blueprints
- Android architecture component架构
- Android MVP架构浅析
- android MVP架构
- Android MVC、MVP架构
- android MVP架构
- Android MVP 架构示例
- android mvp架构 浅尝辄止
- android mvp架构
- android MVP架构学习
- Android MVP架构
- Android架构之MVP
- C#操作Xml文件:增,删,改,查
- android学习 4-25使用Path 绘制几何图形
- hdu-1140 War on Weather(基础三维几何)
- C#事件(event)的一个实例
- 整理iOS9适配中出现的坑(图文)
- Android MVP架构,android-architecture
- 数组实现循环队列 C++实现
- springmvc(一)快速入门(传统版)
- RabbitMQ学习之Java客户端连接测试(二)
- myeclipse中hibernate反向生成mapping配置文件时生成到其他项目中解决方法
- phython学习资料
- 腾讯2016实习笔试:n阶蛇形矩阵
- iOS应用架构谈 本地持久化方案及动态部署
- firebug 的简单使用