MVC
MVC模式最早出现在Java领域,它是应用最广泛的软件架构之一,通常MVC分为:Model(模型)、Controller(控制器)和View(视图)。基于分层的设计,让彼此的职责分开。
View一般是通过Controller和Model来进行联系的,Controller是Model和View的协调者,View和Model不直接联系。基本联系都是单向的。
-----------Model<--------------------------------
| |
| |
|--------->View-------------------------->Controller
在这种模式下,用户通过Controller来操作Model以达到View的变化。
MVP
MVP是从经典的MVC模式演变而来的,它与MVP模式最大的区别是将Controller替换成了Presenter。
在MVP中,Presenter完全把View和Model进行了分离,主要的程序逻辑在Presenter里实现。与MVC不同的是,Presenter与具体的View是没有直接关联的,而是通过定义好的接口进行交互,从而使得在变更View的时候可以保持Presenter不变。
Model<--------------------------------
|
|
View<------------>Presenter<---- |
MVVM
相比前面两种模式,MVVM只是把MVC的Controller和MVP的Presenter换成了ViewModel。View的变化会自动更新到ViewModel,ViewModel的变化也会自动同步到View上显示。
这种自动同步是因为ViewModel中的属性实现了Observer,当属性变更时都能触发对应的操作。
Model<--------------------------------
|
|
View<----------->ViewModel<---- |
DataBinding