1. MVC:
Model+View+Controller
ok,这是最经典的开发客户端的设计模式框架。但是它有一个很严重的问题。除了简单的model和view外,其他页面渲染,页面响应用户操作、响应网络和model之间的交互全都由controller来控制的。
正因为controller肩上的任务繁杂,所以导致了两个问题:
- controller任务太多、逻辑复杂
- controller本身和view耦合性太高,无法测试
model数据掌控者->data
view页面->page
controller二者交互,回调用户操作给model,传递model数据给view
2. MVVM:
Model + View(View + ViewController) + ViewModel
而微软提出的MVVM并不是说取消了controller的层级,而是在MVC的结构之上增加了一个VM(viewModel),这个viewModel在一定程度上分担了controller的职责:用户输入验证逻辑、视图显示逻辑、网络请求、不能放入与view无关的逻辑。
此时的view不在是单纯的view用户界面,而是把controller和view连在一起(view+viewController,),通过viewController向viewModel申请数据,然后在view显示。
所以MVVM兼容MVC,而且更容易测试。