【每日一文】初探MVVM

作者: Jboob | 来源:发表于2016-11-15 00:21 被阅读161次
    【每日一文】初探MVVM

    1、先介绍MVVM历史吧

         MVVM (Model — View — ViewModel)最初是在2005年由微软提出的一个 UI 架构概念。相比 MVP 模式,MVVM 降 Presenter 改为了 ViewModel,同时实现 View 和 ViewModel 的双向绑定。View 层的变化会自动导致 ViewModel 发生变化,ViewModel 的数据变化也会自动实现 View 的刷新,开发者可以不用直接处理View和数据的更新操作,MVVM 框架会完成这一切,MVVM 模式不同层之间关系如图:

    图   1

        在Google I/O 2015 大会上,Android 开发团队发布了官方的 MVVM 模式支持函数库 Data Binding Library。Data Binding Library 是一个兼容函数库,可以在 Android 2.1(API Level 7)及之后的版本大于 1.5.0-alphal,而且 Android Studio 的版本号应该大于或等于 1.3。

    2、Data Binding 函数库的引入

        在 Android module 的 build.gradle 文件中加入下面配置即可,Android Studio 会为我们下载所需的依赖库。

    图 2

    3、Data Binding 表达式

        Data Binding 的布局和普通的布局文件不同,它以<layout>作为根布局标签,里面包含 data 和 view 两个标签,其中 data 标签用来实现数据绑定,view 标签 就是在没有使用 Data Binding 时这个页面的布局文件的根标签,语句如下。

    图  3

        data 标签定义了一个名为 user 的属性变量,类型是名为 User 的 Java 类,在 layout 中使用 @{user.lastName} 来将某个控件的值和 user 的成员变量 绑定在一起。

    4、数据对象

       上面代码中的 user 变量 成为数据对象,它可以是如下所示的 POJO 类。

    图 4

     也可以是如下的 JavaBeans 对象。

    图  5

      对于 Data Binding 而言,上面这两种类的定义是等价的,@{user.firstName} 表达式既可以访问到公有的 firstName 属性,也可以通过 getFirstName() 访问到私有的 firstName 属性。当然,如果存在名为 firstName() 的方法也是可以访问到的。

    5、数据绑定

         默认情况下,将根据布局文件的名称生成一个Binding类,将其转换为Pascal大小写,并在其后面加上“Binding”。 上面的布局文件是main_activity.xml,所以生成类是MainActivityBinding。 这个类保存从布局属性(例如用户变量)到布局视图的所有绑定,并知道如何为绑定表达式分配值。数据绑定的方法很简单,代码如下:

    图  6

    暂且就先写到这里吧!第一次用 MVVM 框架写Demo还是很有趣的,简化了很多代码,用起来方便快捷。本文写的有不对的地方还望各位大神指出,共同学习,共同进步。

    Demo 地址:MVVM

    相关文章

      网友评论

      本文标题:【每日一文】初探MVVM

      本文链接:https://www.haomeiwen.com/subject/ovqkpttx.html