MVVM架构

前言

  • 谷歌推出了dataBinding框架相当于把MVVM架构在android中落地了
  • 自己说想要学MVVM架构说了很久,却一直没有行动
  • 再加上觉得自己已经很久没有写博文学习了,所以就有了这篇博客的出现

我眼中的MVVM

在这里插入图片描述

  • view应该做和UI有关的操作
  • model实现的不仅仅是bean的功能,还有访问数据,解析数据,通过接口回调给viewmodel,model应该专注于处理业务逻辑,无任何UI引用。经过数据转换和操作并最终映射绑定到View层某个UI元素的属性上。
  • viewModel持有的应该是View和Model的接口

Demo实现

  • 照旧选择了登陆模块来实现这个功能

ViewModel层

在这里插入图片描述

  • 可以看到,ViewModel层内的常用的东西其实是可以罗列出来的
  • 持有一个Model层的引用,用来调用Model层的方法
  • 实现数据绑定,在View中可对这些数据进行监控,根据数据的变化来做UI的改变
  • 实现方法绑定,在xml中可以直接调用对应的方法

View层

在这里插入图片描述

  • 主要是通过监听Field实现UI逻辑
  • 不做其他事情

Model层

在这里插入图片描述

  • Model层很容易可以看出来集合了传统的Bean类和对数据的访问操作

优缺点

优点

  • MVVM的主要优点应该就是他一直在强调的数据驱动UI,UI可以通过监控数据来变更自己
  • 抛弃了繁杂的findViewById

缺点

  • 我在使用MVVM的过程中发现一个问题,就是使用MVVM十分不好调试

附录