MVVM浅析

作者: wayDevelop | 来源:发表于2019-03-05 11:43 被阅读88次

参考文章
前不久google官方发布了MVVM的正式库。官方的正式MVVM库主要包括下面四个:


其中只有ViewModel是MVVM结构中的一个组件,其他的三个都是辅助性质的。

lifecycles 就是处理UI界面的生命周期,在26版本以后的Support库中,AppCompatActivity和SupportActivity中都实现了LifecycleOwner,内部已经对UI界面的生命周期做了处理了。

LiveData是一个抽象类,我们可以存放UI页面需要的数据,就是把数据包装在LiveData中了,我们可以观测LiveData中的数据变化,但是LiveData是跟UI的生命周期关联的,当UI页面销毁了,LiveData的数据变化回调是不会执行的。

Room 就是一个sqlite数据持久化库,我们也可以使用别的ORM库。

MVVM分为三层

  • Model :
    Model层就是职责数据的存储、读取网络数据、操作数据库数据以及I/O,一般会有一个ViewModel对象来调用获取这一部分的数据。
    负责数据实现和逻辑处理,当然不止于此,model层将结果通过接口的形式传递给viewModel层

  • View : 对应于Activity和XML,负责View的绘制以及与用户交互,主要负责界面的显示。

  • ViewModel : ViewModel 只做和业务逻辑和业务数据相关的事,
    创建关联,将model和view绑定起来,如此之后,我们model的更改,通过viewmodel反馈给view,从而自动刷新界面,viewModel 和MVP中的presenter 的作用类似 ,只不过是通过 databinding 将数据与ui进行了绑定。

DataBinding是一个实现数据和UI绑定的框架,是构建MVVM模式的一个关键的工具,它是支持双向绑定的。


看上图ModelView是不会发生关系的,ViewModel是把View和Model关联起来的

MVVM优势总结:

  • View和Model双向绑定,一方的改变都会影响另一方,开发者不用再去手动修改UI的数据,互相自动的。
  • 不需要findViewById也不需要butterknife,不需要拿到具体的View去设置数据绑定监听器等等,这些都可以用DataBinding完成。
  • View和Model的双向绑定是支持生命周期检测的,不会担心页面销毁了还有回调发生,这个由lifeCycle完成。
  • 不会像MVC一样导致Activity中代码量巨大,也不会像MVP一样出现大量的View和Presenter接口,项目结构更加低耦合。
public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main);
        UserBean userBean = new UserBean ("张三", "25");
        binding.setUser(userBean );
    }
}

这里用DataBindingUtil.setContentView代替了setContentView,然后创建一个 UserBean 对象,通过 binding.setUser(userBean) 与 variable 进行绑定。
注意:这个ActivityMainBinding 是如何生成的呢?他是继承ViewDataBinding,这个类的生成是有规则的,它是根据对应的布局文件的名字生成的,比如:activity_main-->ActivityMainBinding 、fragment-->FragmentBinding即:第一个单词首字母大写,第二个单词首字母大写,最后都会拼上Binding就是生成的Binding类。

相关文章

  • iOS MVVM+RAC 从框架到实战

    一、前言 二、谈谈MVVM和RAC1、MVVM浅析2、RAC浅浅析3、本篇对两者的理解运用 二、框架部分1、框架目...

  • MVVM浅析

    参考文章前不久google官方发布了MVVM的正式库。官方的正式MVVM库主要包括下面四个: lifecycles...

  • 关于 MVVM 设计模式

    本文主要浅析传统 MVP 设计模式与先进流行的 MVVM 设计模式的一些区别,以及简要分析 MVVM 设计模式的优...

  • MVVM架构浅析

    一.架构思想 1.程序架构架构是为了便于程序员开发和维护代码。 1.2.常见的架构思想MVC: M:模型 V...

  • MVC/MVP/MVVM浅析

    MVC Model-View-Controller (MVC) 体系结构模式将应用程序分成 3 个主要组件组:模型...

  • MVVM框架原理浅析

    MVVM 是一个 Android MVVM 框架,基于谷歌 dataBinding 技术实现。dataBindin...

  • MVC、MVP、MVVM架构浅析

    MVC(Model-View-Controller) 视图(View):用户界面。 控制器(Controller)...

  • MVC、MVP、MVVM模式浅析

    MVC MVC模式最早出现在Java领域,它是应用最广泛的软件架构之一,通常MVC分为:Model(模型)、Con...

  • iOS MVC、MVVM、MVP浅析

    一 iOS MVC、MVVM、MVP 1 MVC MVC是80年代出现的一种软件设计模式,是模型(model),视...

  • 浅析 MVP,MVC,MVVM模式(Android)

    前言 当我们接手一个项目的时候,经常会发现一个activity或fragment动辄上千行甚至上万行代码,这给阅读...

网友评论

    本文标题:MVVM浅析

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