MVVM全名是Model-View-ViewModel,MVVM可以看作MVP的升级版。降低View和控制模块的耦合,减轻了视图的压力。与MVP不同的地方是,ViewModel会跟View进行绑定。这里会用到Android的 Data Binding。 MVP与MVVM区别在于ViewModel与View绑定后,ViewModel与View其中一方的数据更新都能立即通知到对方;Presenter需要通过接口去通知View进行更新。

Model:模型层,负责处理数据的加载或存储。与MVP中的M一样。
View:视图层,负责界面数据的展示,与用户进行交互。与MVP中的V一样。
ViewModel:视图模型,负责完成View于Model间的交互,负责业务逻辑

1.View与ViewModel进行绑定,能够实现双向的交互。ViewModel数据改变时,View会相应变动UI,反之亦然。
2.ViewModel进行业务逻辑处理,通知Model去更新。
3.Model数据更新后,把新数据传递给ViewModel。

MVVM的优点:

相比于MVP,Presente与View存在耦合。ViewModel与View的耦合则更低,ViewModel只负责处理和提供数据,UI的改变,比如TextView 替换 EditText,ViewModel 几乎不需要更改任何代码,只需专注于数据处理就可以了。

View Model里面只包含数据和业务逻辑,没有UI的东西,方便单元测试。

MVVM的缺点:

数据绑定使得程序较难调试,界面出现异常时,有可能是 View 的代码有问题,也可能是 Model 的代码有问题。由于数据绑定使得数据能够快速传递到其他为止,因此要定位出异常就比较有难度了。

 

 

更多相关文章

  1. Android(安卓)Jetpack-Navigation 初见
  2. android转屏时数据保存问题
  3. android sqlite 简明教程
  4. Android(安卓)打造RxBus2.x的全面详解
  5. Android之SQLite 学习一
  6. sparseArray
  7. SQLite基础
  8. 简单的android客户端servlet服务端的交互
  9. Android(安卓)Bundle存储数据类型

随机推荐

  1. python:如何在Linux中编写守护进程
  2. 自学Python1.5-Centos内python2识别中文
  3. Python3 函数式编程(高阶函数)
  4. 开发者实验室体验之文智自然语言处理SDK
  5. Python 3.4:试图让这个模块对这个2d数组中
  6. 在运行期间计算python中GradientBoosting
  7. 【Python】【matplotlib】面向对象方式绘
  8. 【Python深入】Python中继承object和不继
  9. 在Python中接收16位整数。
  10. [LeetCode]题解(python):002-Add Two Number