MVC:
Model, View, Controler
view (UI 层): view 只负责展示从 controller 接受到数据. 也就是把 model 转化成 UI
model (数据层): 不能直接与 controller 通讯, 因为 model 是独立于 UI 存在的
controller: 通过 view 来接受用户的输入, 之后利用 model 来处理用户数据, 最后把结果返回给 view. 它是 view 和 model 之间的一个协议者.
controller, view, model 各司其责互不干扰
存在的问题:
模型(model)代码很少
控制器(controller)的代码一不小心就越来越多
不好测试
MVVM:
Model, viewModel, view和Controller
MVVM 中, view 和 viewController 正式联系在一起, 把他们视为一个组件
view 和 viewController 都不能直接引用 model, 而是引用视图模型
viewModel 是一个放置用户输入验证逻辑, 视图显示逻辑, 发起网络请求和其他的代码
MVVM 模式关键点:
用户和 view 交互
view 和 viewModel 是多对一关系. 意味着一个 viewModel 只映射多个 view
view 持有 viewModel 的引用, 但是 viewModel 没有任何 view 的信息
view 和 viewModel 之间有双向数据绑定关系