Android Mvp、Mvc、Mvvm

前段时间项目上有点忙,已经停止更新很久了,最近有空,想把自己之前再项目中用的一些,或者学习的一些知识总结一下,哈哈,又快到年底啦。可以做做准备哦。

首先要明确了解MVP、MVC、MVVM 都是软件的架构,然后我们再来分别了解下他们之间的优缺点和联系

MVC

mvc的意思是,软件可以分为三个部分
mvc(model-view-controller)

  • modle(数据模型):数据的存储对象
  • view(试图): 用户的界面(也就是我们所说的activity界面)
  • controller(控制器):业务逻辑层

各个模块之间的联系如下图

Android Mvp、Mvc、Mvvm_第1张图片
mvc.png
  • 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之间的交互

各个模块之间的联系如下图:

Android Mvp、Mvc、Mvvm_第2张图片
mvp.png

中间实现的原理个人理解就是:

  1. activity界面实现一个viewInterface
  2. present对象中注入viewinterface实例
    在present中可以做任何复杂的业务逻辑操作
    处理结束之后,可以通过viewinterface,直接更改activity界面的更改

哈哈,是不是很简单。

mvp优点:
model层不再直接更新view层,降低了耦合性,更利于测试

MVVM

mvvm模式将mvp中present改为viewModel,基本和mvp一致

关系图如下:

Android Mvp、Mvc、Mvvm_第3张图片
mvvm.png

关于什么是MVVM可以参考下这这篇文章

还有一个本人之前写的databinding这篇文章

你可能感兴趣的:(Android Mvp、Mvc、Mvvm)