MVVM+RAC总结

目录

一、什么是MVVM

二、为什么使用MVVM

三、RAC

3.1 RAC的用法

四、RAC与MVVM架构设计的优点

五、MVVM + RAC

5.1 MVVM使用指南

5.2 RAC坑


一、什么是MVVM

MVVM(Model - View/ViewController - ViewModel)是对MVC的一种变形设计模式,解决ViewController代码臃肿、View和Model模块耦合严重两个主要问题。抽出ViewModel来处理ViewController的业务逻辑,分离了UI代码和业务逻辑,并且ViewModel监听model事件,一旦发生变化更新视图,很好的解决了视图与模型的依赖性。看下图:

在MVVM 中,view 和 view controller正式联系在一起,我们把它们视为一个组件; view 和 view controller 都不能直接引用model,而是引用视图模型(viewModel);viewModel 是一个放置用户输入验证逻辑,视图显示逻辑,发起网络请求和其他代码的地方。

二、为什么使用MVVM

虽然MVC 依然是目前主流客户端编程框架,但同时它也被调侃成Massive View Controller(重量级视图控制器),想必大家在开发中无可避免被下面几个问题所困扰:

  • 厚重的ViewController
  • 遗失的网络逻辑
  • 较差的可测试性

为了避免和解决上述问题的产生,从MVC引申出来一种维护性较强、耦合性低的新的架构MVVM,主要目的是为了分离视图(View)和模型(Model)。

MVVM优势:

  • 低耦合:View 可以独立于Model变化和修改。
  • 可重用性:可以把一些视图逻辑放在一个 viewModel里面,让很多 view 重用这段视图逻辑。
  • 独立开发:开发人员可以专注于业务逻辑和数据的 viewModel开发。
  • 可测试:通常界面是比较难于测试的,而 MVVM 模式可以针对 viewModel来进行测试。
  • 兼容性:MVVM 可以兼容当下使用的MVC架构, 增加应用的可测试性。

三、RAC

ReactiveCocoa(简称为RAC),是由Github开源的一个应用于iOS和OS开发的新框架。结合了几种编程风格:函数式编程 和 响应式编程 ,使用RAC解决问题,就不需要考虑调用顺序,直接考虑结果,把每一次操作都写成一系列嵌套的方法中,使代码高聚合,方便管理。

函数式编程思想:是把操作尽量写成一系列嵌套的函数或者方法调用。

响应式编程思想:不需要考虑调用顺序,只需要考虑结果,产生一个事件,事件传播出去,然后影响结果。

3.1 RAC的用法

在RAC中最核心的类RACSignal:信号类,一般表示将来有数据传递,只要有数据改变,信号内部接收到数据,就会马上发出数据。

注意:

  • 信号类(RACSignal),只是表示当数据改变时,信号内部会发出数据,它本身不具备发送信号的能力,而是交给内部一个订阅者去发出。
  • 默认一个信号都是冷信号,也就是值改变了,也不会触发,只有订阅了这个信号,这个信号才会变为热信号,值改变了才会触发。
  • 如何订阅信号:调用信号RACSignal的subscribeNext就能订阅。

RACSignal使用步骤:

  • 创建信号 + (RACSignal *)createSignal:(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值