MVVM和RAC介绍

来源:互联网 发布:mac的caj阅读器 编辑:程序博客网 时间:2024/06/05 16:39

一、ReactiveCocoa
RAC完全颠覆了传统的开发模式,使消息传递回调等机制复杂问题简单化,初始化与回调放在一起,使整个逻辑很具条理化。

ReactiveCocoa结合了一些编程模式:
1.函数式编程:利用高阶函数,即将函数作为其它函数的参数。
2.响应式编程:关注于数据流及变化的传播。
基于以上两点,ReactiveCocoa被当成是函数响应编程(Functional Reactive Programming, FRP)框架。

二、MVVM
在MVVM中View和ViewController通过视图模型ViewModel正式联系在一起。 ViewModel是一个放置用户输入验证逻辑,视图显示逻辑,发起网络请求和其他各种各样代码的好地方。 ViewModel不引用UIKit。 展示逻辑放在了ViewModel中,比如Model的值映射到一个格式化字符串。实际上就是把原来ViewController做的一些事情放到了ViewModel中进行,为ViewController减负。

在我看来,如果页面逻辑比较简单,比如实现一个列表的逻辑,MVC就足矣。没必要使用相对复杂的逻辑如MVVM或MVP。

三、MVVM+RAC
ReactiveCocoa所扮演的角色:进行ViewModel连接”粘合”工作

1.例如在ViewController中给ViewModel的某个属性绑定信号,实时监听属性的变化。每当属性发生变化,ViewModel中就会发生一个信号出来,ViewController中对应的属性订阅这个信号,在订阅到这个信号的回调中执行后面的逻辑。

2.利用RACCommand执行execute方法来返回一个signal,订阅这个signal,这个signal中可以利用 initWithSignalBlock方法返回一个经过处理的signal,比如要把网络请求的数据返回并且解析成模型数组,都可以放在这个block中进行处理。

参考:https://github.com/MikeZhangpy/RAC-MVVMTest