2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

ReactorKit:iOS 单向数据流架构

  • 2017-05-10
  • 本文字数:1048 字

    阅读完需:约 3 分钟

ReactorKit 是一个面向响应式单向 Swift 应用程序架构的框架,结合了 Flux 响应式编程。其中,Flux 是 Facebook 用来构建客户端 Web 应用程序的应用架构。它借助单向数据流完善了 React 的可组合视图组件。它更多的是一种模式,而不是一种传统的框架。

在 ReactorKit 框架中,用户动作和视图状态都是通过可观测的流传递给每一层。这些流是单向的,因此,视图只能发出动作,而响应者只能发出状态,如下图所示:

按照设计,ReactorKit 旨在实现以下三个目标:

  • 可测试性:ReactorKit 的第一个目标是将业务逻辑从视图分离,响应者不依赖于任何视图,可单独测试;
  • 从小做起:ReactorKit 不要求整个应用程序遵循统一的架构,开发人员可以只在一个具体的视图中使用它,在已有的项目中使用 ReactorKit 也无需重写任何东西;
  • 减少输入:对于简单的东西,ReactorKit 注重避免复杂的代码,与其他架构相比,它需要的代码更少。

ReactorKit 主要包含以下三个层次:

  • 视图:视图展示数据。一个视图控制器和一个单元格被视为一个视图。视图将用户输入绑定到动作流,将视图状态绑定到每个 UI 组件。视图层不包含业务逻辑。视图只负责定义如何映射动作流和状态流。
  • 响应者:响应者是一个独立的层,负责管理视图状态。响应者最重要的作用是从视图分离出控制流。每个视图都有相应的响应者,并将逻辑处理委托给响应者。响应者不依赖视图,很容易测试。
  • 服务:ReactorKit 有一个特殊的、称为服务的层。服务层实现具体的业务逻辑。响应者介于视图和服务之间,管理事件流。当响应者收到来自视图的用户动作,它就会调用服务逻辑。服务会发送一个网络请求,并将响应返回给响应者。然后,响应者会使用服务响应创建一个变种流。

此外,一个响应者可以和多个服务通信。ServiceProvider 为响应者提供了到每个服务的引用。服务提供者在整个应用程序生命 ZZ 周期内只创建一次,并传递给第一个响应者。第一个响应者将同一个服务提供者实例的引用传递给子响应者。

ReactorKit 的 GitHub 页面上列出了以下几个示例:

  • Counter :最简单、最基本的 ReactorKit 示例;
  • RxTodo : 使用 ReactorKit 的 iOS Todo 应用;
  • Cleverbot : 使用 Cleverbot 和 ReactorKit 的 iOS Messaging 应用;
  • Drrrible : 使用 ReactorKit 的 Dribbble for iOS(应用商店)。

ReactorKit 遵循 MIT 许可协议。感兴趣的读者可以下载试用及加入 ReactorKit 社区


感谢徐川对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2017-05-10 19:003485
用户头像

发布了 1008 篇内容, 共 441.9 次阅读, 收获喜欢 346 次。

关注

评论

发布
暂无评论
发现更多内容

前端工程化-webpack

chun1123

大前端 webpack

重装变态的微信

箭上有毒

生活记录 4月日更

MySQL主从不一致情形与解决方法

AI乔治

Java MySQL 架构 主从同步

MySQL高可用架构:mysql+keepalived实现

AI乔治

Java MySQL 架构 高可用架构 keepalive

京东首席架构师深邃洞察:服务化+云原生+微服务

Java架构师迁哥

面试别慌!阿里专家带你从【入门+基础+进阶+项目】攻破SpringBoot

Java架构师迁哥

爆肝1W+字,通俗易懂的讲解下Java注解

AI乔治

Java 架构 面试 注解

深入浅出解读SpringMVC 进阶版

AI乔治

Java spring 架构 微服务 springmvc

收藏!阿里P9耗时28天,总结历年亿级活动高并发系统设计手册

Java架构师迁哥

ElasticSearch

云淡风轻

elasticsearch

Dubbo学习笔记

风翱

dubbo 4月日更

开源新老兵携手打开社区大门,带大学生走近开源

DT极客

你公司有没有企业文化?

石云升

团队建设 28天写作 职场经验 管理经验 4月日更

对于医疗健康行业,区块链最大的价值在哪里?

CECBC

医疗

为什么区块链技术仍然被人们认为当成一个投机的工具?

CECBC

别让心里的墙,挡住了你未来的路

小天同学

思考 认知提升 认知 4月日更

全面复盘B站面试时坑我最深的Java并发:JDK源码剖析

Java架构师迁哥

架构师必经之路!Github榜首Java代码优化:77案例+28技巧开源分享

Java架构师迁哥

Github瞬间爆火!被各大厂要求直接下架的面试题库也太全了

Java 编程 程序员 架构 面试

网络协议学习笔记 Day6

穿过生命散发芬芳

网络协议 4月日更

聪明人的训练(二十七)

Changing Lin

4月日更

答对这八个Redis的问题,说明你精通了

AI乔治

Java redis 架构 分布式 高并发

如何在 Spring/Spring Boot 中优雅地做参数校验?

JavaGuide

Java spring springboot

小技巧 | 帮助运营小姐姐批量修改文件名的几种方式

梁龙先森

Node 脚本 PowerShell

什么是低代码开发?低代码11大核心功能介绍!

优秀

低代码

为打造更好移动生态:日活超1.2亿的百度知道,摊牌了

ToB行业头条

百度 百度知道

电脑护眼不权威指南,年纪轻轻眼睛就不行了?

彭宏豪95

效率 windows 4月日更 护眼

周转箱在仓配业务中的应用

Geek_vidmje

一枚比特币变换一台车,特斯拉与比特币还要绑定多久?

CECBC

特斯拉

工行首次全面展示数十项数字人民币研发试点成果

CECBC

数字人民币

强化区块链技术在数字政府、智慧城市、智能制造等领域应用

CECBC

人工智能

ReactorKit:iOS单向数据流架构_Android/iOS_谢丽_InfoQ精选文章