MVC
M:模型
V:视图
C:控制器
控制器拿到数据显示到视图上
缺点: 控制器中代码繁多,过于臃肿
MVVM
可以说MVVM是MVC改进而来,因为MVC的C太庞大了,所以给他减减重,就新建了一种viewModel类,它继承于NSObject,从viewController中抽出UI逻辑,就放在viewModel里了,在viewModel里每一个view里的UI控件都有与之对应的属性,也就是说,对于在view上要展现的控件,你需要在viewModel里设置控件相对应的数据属性,然后在controller里直接用viewModel的数据属性赋值给相应控件.
view: 视图展示,包含UIView以及UIViewController,view层是可以持有ViewModel的.
viewModel:视图适配器,暴露属性与view元素显示内容或者元素状态一一对应,一般情况下viewModel暴露的属性建议是readOnly的,viewModel层是可以持有Model的.
Model:数据模型与持久化抽象模型
binder:MVVM的灵魂,它最主要的作用是在view和viewModel之间做了双向数据绑定,如果没有binder,那么它与mvc的差异不是很大
(运用get方法中的didset方法做值的改变)