mvvm和MVP比较大的区别是:vm和v是单向引用, 只有activity持有vm引用,vm是不持有view的引用的,所以vm的构造方法中不能传入视图相关的对象。
数据驱动。在常规的开发模式中,数据变化需要更新UI的时候,需要先获取UI控件的引用,然后再更新UI。 获取用户的输入和操作也需要通过UI控件的引用。在MVVM中,这些都是通过数据驱动来自动完成的, 数据变化后会自动更新UI,UI的改变也能自动反馈到数据层,数据成为主导因素。这样MVVM层在业务逻辑处理中只要关心数据,不需要直接和UI打交道,在业务处理过程中简单方便很多。
在之前DataBinding的学习中,当然也包括网上大部分关于mvvm和databinding的教程中,都是在xml中引入很多变量,然后把这些变量的数据和控件绑定在一起,这样xml的可读性非常差。
m -> model v->view vm -> viewmodel
1.View层就是展示数据的,以及接收到用户的操作传递给viewModel层,通过dataBinding实现数据与view的单向绑定或双向绑定
2.Model层最重要的作用就是获取数据了,当然不止于此,model层将结果通过接口的形式传递给viewModel层
3.ViewModel 层通过调用model层获取数据,以及业务逻辑的处理。
4.mvvm中 viewModel 和MVP中的presenter 的作用类似 ,只不过是通过 databinding 将数据与ui进行了绑定。
model数据层,除了数据的获取还得与viewmodel层进行数据交互,viewmodel(vm)相当于mvp中的p层,处理逻辑,model层还需通过
databing,与view层的空间进行绑定。
Databinding布局
data 标签的作用就像一个桥梁搭建了 View 和 Model 之间的通道
Observable -> 观察者
databinding支持双向绑定以及单向绑定,单向绑定主要用model与view的连接,即数据发生变化的时候,会自动更新view的数据,view的视图
发生变化,同时也更新model的数据,这就是双向绑定
网友评论