一篇文章彻底弄懂Android-MVVM

转:

一篇文章彻底弄懂Android-MVVM

在学习一个技术之前,我们首先要搞清为什么要用它、用它以后会有什么好处,这样我们才能有兴趣的学习下去。

一、为什么要用MVVM?

我为什么要用这个什么MVVM,我就平常写和它有什么不同吗?

首先我们要说一下,使用MVVM后,程序会有哪些变化:

1.MVVM并不会提升程序的性能,甚至如果用不好还会降低性能。

2.MVVM会增大代码的总量。

3.阅读MVVM的代码你必须不停的跳来跳去,跳到你恶心想吐。

啥?你在搞笑吗?那我为什么还要用它?且慢,我还没说最重要的一条。

4.MVVM将让你的程序完全解耦。当然,是正确使用的前提下。

为了最后这一条,我们用前3条的牺牲完全不过分,真正写代码的时候,我们面对的往往不是性能的些许提升,也不是几十或几百K的包大小增大带来的问题,而是程序不停迭代所带来的程序稳定性要求。而这也是MVVM大显身手的地方,MVVM能够完全让你的业务功能组件化,让我们需要什么就调什么,并且组件可以在不同页面之间复用;在写业务组件的时候,我们可以完全集中精力,只管写组件要完成的功能,而无需分神它顾。

读到这,相信你应该对MVVM稍微有点兴趣了吧。

二、MVVM到底是什么?

MVVM,是Model、View、ViewModel三者的缩写,它是一种程序的设计框架,是一种设计思路。不同的人实现MVVM,所用的构成技术、实现以后的性能都是不一样的。千万不要觉得它有多深奥,他其实就是由一系列代码(或技术)构成的一个程序的底座。我们在良好底座上开发出来的程序稳定性更高,可扩展性更强。

下面我们挨个来来说Model、View、ViewModel。

1.Model:数据提供。

Model在程序中专门用于提供数据,不管是网络请求获得的数据,还是数据库获得的数据,统统写在Model里。Model层独立性相当强,它只用来提供数据,而不管数据是用来做什么的。

2.View:视图元素和视图元素初始化。

View在Android中指代的就是我们常见的布局文件和Activity中的元素初始化部分。总之,所有一切我们在Android上肉眼能看见的东西都是View。在View层里,我只对UI做初始化,比如将TextView设置字体大小,为Banner控件设置滚动速度等等,这些大多可以直接在布局文件中完成。

3.ViewModel:操作业务数据,并将数据呈现在View上。

ViewModel根据业务需要,从Model层调取相关数据,然后更新View层相关元素。

说起来有点抽象,别急,下面我们用一个简单的例子来解释它们怎样互相配合,你很快就会明白。

在例子中,我们使用Google提供的DataBinding技术来完成数据绑定,以实现View和ViewModel层的交互。

上一篇:什么是MVVM 模式的实现者——双向数据绑定模式


下一篇:RxHttp - 轻量级、可扩展、易使用、完美兼容MVVM、MVC架构的网络封装类库