iOS MVVM与MVC
2016-11-24 本文已影响611人
codychen123
MVVM示意图
MVC
- MVC结构图
- 从图中我们可以看出
控制器(Controller)
主要负责数据的交互和与视图的交互,模型(Model)
负责传递数据,视图(View)
负责接收控制器的指令并展示数据。
MVC的缺点
- 模型的代码很少
- 控制器的代码一不小心就会越来越多
- 代码冗余率高,不好测试
MVVM
- MVVM是
Model-View-ViewModel
的简写,MVVM模式和MVC模式一样,主要目的是分离视图(View)
和模型(Model)
。
MVVM结构图
MVVM示意图.pngMVVM概念
- 在MVVM中,
view
和view controller
正式联系在一起,我们把它们视为一个组件 -
view
和view controller
都不能直接引用model
,而是引用视图模型 -
view model
可以放置用户输入验证逻辑,视图显示逻辑,发起网络请求和其他代码
MVVM使用注意事项
-
view
引用view model
,但是反过来就不行 -
view model
引用了model
,但是反过来就不行
MVVM的优点
- 低耦合:
View
可以独立于Model
变化和修改,一个ViewModel
可以绑定到不同的View
上,降低代码冗余率。 - 可重用性: 可以把一些视图逻辑放在一个
ViewModel
里面,让很多View
重用这段视图逻辑,提高代码效率。 - 独立开发:开发人员可以专注于业务逻辑和数据的开发
ViewModel
里面,设计人员可以专注于页面设置,提高人员效率。 - 可测试: 通常界面是比较难测试,而MVVM模式可以针对
ViewModel
来进行测试
MVVM的缺点
- 类会增多
- 同MVC一样,
ViewModel
会越来越大,里面的逻辑、方法、属性会越来越多 - MVVM相对于MVC,层级分明,承担了
Controller
的部分逻辑,并且ViewModel
可以当做模板供其他类使用,代表调用复杂度会增加,因为跟MVC的思想不太一样。