首页 > 代码库 > MVC、MVP、MVVM模式对比总结(2)横向构架模型

MVC、MVP、MVVM模式对比总结(2)横向构架模型

前言说明

在实战项目及学习中来总结一下Android端项目构架

包括MVC、MVP、MVVM,主要针对移动Android端

该篇只描述横向构架模型

 

目录

1.构架基础

2.横向构架模型

3.纵向构架流程

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方法

MVC、MVP、MVVM模式对比总结(2)横向构架模型