MVVM学习初探

MVC模式大家都比较熟悉,MVVM 是 MVC 模式的一种演进,它主要解决了 ViewController 过于臃肿带来的不易维护和测试的问题。

MVVM的定义
1、M -> Model。MVVM中的Model层和MVC中的Model层是对应的,没有大的区别。可以用来存放表现数据-模型的对象信息
2、V ->View。MVVM中的View层,包含UI本身以及任何视图特定的逻辑, 和对用户输入的反馈。在这一层包括很多需由 UIViewController 处理的工作。
3、VM ->View Model层。它的职责是为View层提供数据,并且包含为提供这些数据所需处理的业务逻辑。
下面看一下MVVM和MVC的对应关系:
MVC和MVVM模式在 iOS 中组装在一起的简单映射图:
这里写图片描述
图中区块尺寸大致对应它们负责的工作量。
在View-Model层和MVC中的C层有大量的重合部分,也就是说在VM层中会分担以前在MVC模式下C层中的大量业务逻辑的处理工作。在MVVM模式下,View层所需的数据是从ViewModel层得到的,但是UI显示层不和ViewModel层直接打交道,所以中间可以通过Controller来沟通。View层也不用关心ViewMode层数据是经过怎样的加工处理得到的。这样Controller所需做的事情就减少了。
在MVVM中不抛弃视图控制器的概念,那么我们可以得到下图
这里写图片描述

现在Controller仅关注于用 view-model 的数据配置和管理各种各样的视图, 同时当用户输入时让 view-model 获知并需要向上游修改数据。视图控制器不需要了解关于网络服务调用, Core Data, 模型对象等。
view-model 会在视图控制器上以一个属性的方式存在。视图控制器知道 view-model 和它的公有属性, 但是 view-model 对视图控制器一无所知。
把组件组装在一起还有组件对应职责的另一种方式, 就是着眼于我们新的应用构建模块层级图。
这里写图片描述

ViewController 尽量不涉及业务逻辑,让 ViewModel 去做这些事情。
ViewController 只是一个中间人,接收 View 的事件、调用 ViewModel 的方法、响应 ViewModel 的变化。
ViewModel 不能包含 View,不然就跟 View 产生了耦合,不方便复用和测试。
ViewModel 之间可以有依赖。
ViewModel 避免过于臃肿,不然维护起来也是个问题。

本次MVVM学习参考网上的博客,从概念上去学习它,改天结合一个例子来学习MVVM。

参考的博客:
http://www.cocoachina.com/ios/20150526/11930.html
http://limboy.me/ios/2015/09/27/ios-mvvm-without-reactivecocoa.html
http://www.objccn.io/issue-13-1/
http://www.cnblogs.com/ludashi/p/4211556.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值