前言
开发过程中常见的框架模式有MVC、MVP、MVVM,本篇文章讲解MVVM框架模式的原理及在Android开发中如何实现及使用该框架模式。这里一定要明白MVVM不是某些技术实现而是架构模式或者说是设计思路,我们根据MVVM的设计原理进行架构开发,最终形成的是一系列代码组合而成的MVVM模式的框架,MVVM是Android开发最好的架构选择之一,也是Google官方非常支持和鼓励开发者使用这一架构模式,在这个框架上开发出来的程序稳定性更高,可扩展性更强。
MVVM原理
MVVM模式不是四层,任然是3层,是Model-View-ViewModel的简写,VM是ViewModel的缩写,VM可以理解为View的数据模型和Presenter的合体,ViewModel和View之间的交互通过data binding完成。下面我们挨个来来说Model、View、ViewModel。
Model
Model层就是职责数据的存储、读取网络数据、操作数据库数据以及I/O,它就是用来提供数据,不关心数据去做什么。
View
View层做的仅仅和UI相关的工作,在Android中我们只在XML、Activity、Fragment写View层的代码,View层不做和业务相关的事,也就是我们的Activity 不写和业务逻辑相关代码,一般Activity不写更新UI的代码,如果非得要写,那更新的UI必须和业务逻辑和数据是没有关系的,只是单纯UI逻辑来更新UI,比如:滑动时头部颜色渐变、editttext根据输入内容显示隐藏等,简单的说:View层不做任何业务逻辑、不涉及操作数据、不处理数据、UI和数据严格的分开。
ViewModel
ViewModel 只做和业务逻辑和业务数据相关的事,不做任何和UI、控件相关的事,ViewModel 层不会持有任何控件的引用,更不会在ViewModel中通过UI控件的引用去做更新UI的事情。ViewModel就是专注于业务的逻辑处理,操作的也都是对数据进行操作,这些个数据源绑定在相应的控件上会自动去更改UI,开发者不需要关心更新UI的事情。
此处贴出MVVM的模型图
ViewModel是如何让View和Model实现数据绑定,达到自动更新以及数据更新双向的绑定关系呢?
Google在2018年推出了Android Jetpack组件,Jetpack是一个Android软件组件的集合,其中AAC(Android Architecture Components)框架是android官方提供的一系列组件,用来非常方便的实现MVVM架构。
本文主要讲解AAC中Lifecycle、LiveData、ViewModel以及DataBinding的结合使用搭建能够基础开发的MVVM架构项目。
添加依赖
1 | //Google AAC |