前段时间项目上有点忙,已经停止更新很久了,最近有空,想把自己之前再项目中用的一些,或者学习的一些知识总结一下,哈哈,又快到年底啦。可以做做准备哦。
首先要明确了解MVP、MVC、MVVM 都是软件的架构,然后我们再来分别了解下他们之间的优缺点和联系
MVC
mvc的意思是,软件可以分为三个部分
mvc(model-view-controller)
- modle(数据模型):数据的存储对象
- view(试图): 用户的界面(也就是我们所说的activity界面)
- controller(控制器):业务逻辑层
各个模块之间的联系如下图
- view:用户在界面操作之后,传达指令给controller控制层
- controller: 接收指令之后,进行相应的业务逻辑之后,得到数据,传递给model
- model: 在得到新的数据之后,通知view界面更新状态
MVC优缺点:
优点:
讲业务逻辑层都抽到controller层,模块化程度高
缺点:
view-model-controller之间的联系紧密,耦合性低,不利于测试和修改
MVP
mvp和mvc类似,只是将controller改为present
(model-view-present)
- model(数据模型):数据的存储
- view(试图):用户的界面(也就是我们所说的activity界面)
- present:主要负责view和model之间的交互
各个模块之间的联系如下图:
中间实现的原理个人理解就是:
- activity界面实现一个viewInterface
- present对象中注入viewinterface实例
在present中可以做任何复杂的业务逻辑操作
处理结束之后,可以通过viewinterface,直接更改activity界面的更改
哈哈,是不是很简单。
mvp优点:
model层不再直接更新view层,降低了耦合性,更利于测试
MVVM
mvvm模式将mvp中present改为viewModel,基本和mvp一致
关系图如下:
关于什么是MVVM可以参考下这这篇文章
还有一个本人之前写的databinding这篇文章