前言说明
在实战项目及学习中来总结一下Android端项目构架
包括MVC、MVP、MVVM,主要针对移动Android端
该篇只描述横向构架模型
目录
4.代码例子
2.横向构架模型
MVC构架
综合说明:
以manager作为controller层
activity/fragment(view)调用manager(controller)处理请求
manager(controller)调用NetHelp(model)处理业务逻辑
虚线代表返回结果
NetHelper网络通信使用AsyncTask+URLConnection实现
MVP构架
综合说明:
presenter接收了view传递的接口引用来操作view
activity/fragment(view)调用presenter处理请求
presenter调用NetHelper(model)处理业务逻辑
虚线只返回到presenter
但presenter通过接口操作activity/fragment(view),它们的箭头双向通信
presenter也可以通过eventbus或callback与activity/fragment(view)通信
NetHelp网络通信可以进化为使用OkHttp实现
MVVM构架
综合说明:
viewModel通过dataBinding与xml布局文件绑定,可直接操作原始数据
viewModel与activity/fragment(view)也是双向通信双向箭头
虚线代表结果返回,只返回到viewModel
viewModel肯定还是需要得到activity相关对象才可显示供用户查看
这里可以是activity中的环境对象或activity本身
当然viewModel也可以通过eventbus或callback与activity通信
NetHelp网络通信可以进化为使用流行的Retrofit+RxJava实现
构架模型小结
1. model模型层,一般不仅仅包括业务逻辑模型,也包括实体模型.
业务逻辑一般是处理具体业务的层,例如此文中一切处理数据请求的DBHelper都当做此层
可能在后端不尽相同.后端业务模型包括Service中间层,DAO数据持久层
实体是专门承载数据,例如用户实体User, 学生实体Student.
2. 在构架方面,此文只相对固定的模式,我觉得在具备基础的条件下,完全可以无招胜有招
还是那句老话,按照项目选择最合适构架
例如我个人觉得以mvp为标准,使presenter引用view接口下
xml布局也还是可根presenter绑定,那么presenter即可直接操作原始数据,可以操作view方法