MVC:
- 最早出现在Java领域
- 一般MVC分为:Model(模型)、Controller(控制器)和View(视图)
- 基于分层的目的,让彼此职责分开
- View一般通过Controller与Model进行联系
- Controller是Model和View的协调者
- View和Model不直接联系。基本联系都是单向的
- 用户通过Controller来操作Model以达到View的变化
MVP:
- 从经典的MVC模式演变
- 两者基本思想有相通的地方:Controller/Presenter负责逻辑的处理,Model提供数据,View负责显示
- Presenter完全把View和Model进行分离,主要的程序逻辑在Presenter中实现
- Presenter与View是没有直接关联的,而是通过定义好的借口进行交互,从而使得在变更View的时候可以保持Presenter不变
- 所以Presenter与Model与View是双向联系,但Model与View无联系
MVVM:
- 相对于前面两种模式,MVVM只是把MVC的Controller和MVP的Presenter改成了ViewModel
- View的变化会自动更新到ViewModel,ViewModel的变化也会自动同步到View上显示
- 这种自动同步是因为ViewModel中的属性实现了Observer(观察者),当属性变更时都会触发对应的操作