MVC
MVC
是Model View Controller
的缩写。从名字可以看出它由三部分组成:Model
、View
和Controller
。
Model
代表业务逻辑模型(并非数据模型)。View
是视图,用来显示用户交互界面。Controller
是控制器,用来调节Modle
和View
的交互。
在MVC
中,Controller
和其他部分之间的通信都是双向的。而View
和Model
之间没有任何通信关系。
MVC
有两个缺点:
- 厚重的
Controller
Model
应包括数据和操作数据的业务逻辑。但是在实践中,Model
的业务逻辑都被放到Controller
。 - 较差的可测试性
由于Controller
混合了视图处理逻辑和业务逻辑,不便单元测试。
MVVM
MVVM
是 Model-View-ViewModel
的缩写。从名字可以看出它由三部分组成:Model
、View
和ViewModel
。
Model
代表数据模型,也可以在Model
中定义操作数据的业务逻辑。View
代表 UI(用户界面) 组件,它负责将数据模型转化成 UI 展现出来。View-Model
监听模型数据的改变和控制视图行为、处理用户交互。
在MVVM
架构下,View
和 Model
之间并没有直接的联系,而是通过ViewModel
进行交互,Model
和 ViewModel
之间的交互是双向的, 因此 View
数据的变化会同步到Model
中,而Model
数据的变化也会立即反应到View
上。
ViewModel
通过双向数据绑定把 View
层和 Model
层连接了起来,而View
和 Model
之间的同步工作完全是自动的,无需人为干涉,因此开发者只需关注业务逻辑就可以了。