mvc-mvvm
图片参考
MVP和 MVVM
MVP: Model和View之间不进行通讯,都是通过Presenter完成,
Presenter:实现业务逻辑,弱化Mode(相对于MVC)
Model:针对业务模型,建立的数据结构和相关的类
View:视图层

MVVM :为了解决ui复杂多变,使MVP中的View接口变的庞大,推出了MVVM,
MVVM解决了这一问题,通过双向绑定的机制,实现数据和UI内容,只要想改其中一方,另一方都能够及时更新的一种设计理念,这样就省去了很多在View层中写很多case的情况,只需要改变数据就行
Model :负责数据实现和逻辑处理,类似MVP。
View : 对应于Activity和XML,负责View的绘制以及与用户交互,类似MVP。
ViewModel : 创建关联,将model和view绑定起来,如此之后,我们model的更改,通过viewmodel反馈给view,从而自动刷新界面
总结:View层的Activity通过DataBinding生成Binding实例,把这个实例传递给ViewModel,ViewModel层通过把自身与Binding实例绑定,从而实现View中layout与ViewModel的双向绑定
作者:唠嗑008
链接:https://www.jianshu.com/p/4830912f5162
MVVM中跟MVP中一样,将三层划分的很清楚,Activity和xml layout充当View,ViewModel处理业务逻辑以及获取数据,弱化Model

-
MVP和MVVM的区别
在MVP中View和presenter要相互持有,方便调用对方,而在MVVM中 View和ViewModel通过Binding进行关联,他们之前的关联处理通过DataBinding完成。 -
MVVM与DataBinding的关系
MVVM是一种思想,DataBinding是谷歌推出的方便实现MVVM的工具。在google推出DataBinding之前,因为xml layout功能较弱,想实现MVVM非常困难。而DataBinding的出现可以让我们很方便的实现MVVM
(https://blog.csdn.net/u010072711/article/details/77132403)


