MVC
传统的代码架构模式,仅仅是对代码进行了分层,其中的C代表Controller,控制的意思
将代码划分为数据层,视图层,控制层,三层之间可以任意交互
MVP
MVP是在MVC基础上改进而来的一种架构,其中的P代表Presenter,主持的意思
它主要在以下两方面进行了改进:解耦,接口化
MVP架构规定,Model层和View层不能直接通信,要通过Presenter层进行调度,这样就实现了Model层和View层的解耦
同时,MVP架构还规定,Model层、View层、Presenter层必须通过接口进行交互,这样就明确了每层的功能定位
MVVM
MVVM是一个比较新的架构模式,其中的VM代表ViewModel,视图模型的意思
单从调用关系来说,MVVM和MVP看起来是完全一样的,但它们是两种完全不同的编程风格
MVP是接口化编程风格,而MVVM是响应式编程风格,它们是两种不同的东西,适合各自的场景,并不是好与坏,谁取代谁的关系
ViewModel中存放了与View相对应的数据,它们是相互绑定的
当View发生变化时,ViewModel中的值会自动同步,当ViewModel值被修改时,View会自动变化
这就是所谓的响应式编程,控件和数据都是可观察的,其中一方变化,另一方会自动收到通知