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:003513
用户头像

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

关注

评论

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

鸿蒙开发实战:Performance Analysis Kit优化新闻应用流畅度

chengxujianke

HarmonyOS开发实战:Status Bar Extension Kit定制新闻应用状态栏

chengxujianke

HarmonyOS开发笔记:Test Kit实现新闻应用自动化测试

chengxujianke

通义灵码 Agent+MCP:打造自动化菜品推荐平台,从需求到部署实现全流程创新

阿里云云效

阿里云 通义灵码

语音 AI 转录应用 Wispr Flow 融资 3000 万美元;饿了么骑手 AI 助手:支持语音唤醒,会主动发起询问丨日报

RTE开发者社区

鸿蒙开发实战:Function Flow Runtime Kit优化新闻应用的异步任务处理

chengxujianke

鸿蒙开发实战:Telephony Kit实现新闻应用智能免打扰

chengxujianke

鸿蒙开发实战:Universal Keystore Kit保障新闻应用数据安全

chengxujianke

观测云正式上线 Google Cloud Marketplace,全面覆盖全球主流云平台!

观测云

可观测性

HarmonyOS开发实战:Multimodal Awareness Kit在新闻应用中的多模态交互

chengxujianke

HarmonyOS开发实战:NearLink Kit实现新闻极速互传

chengxujianke

HarmonyOS开发实战:Online Authentication Kit实现新闻应用安全登录

chengxujianke

通义灵码 Agent+MCP:打造自动化菜品推荐平台,从需求到部署实现全流程创新

阿里巴巴云原生

阿里云 通义灵码 MCP

为什么 IoTDB 选择 Java?权衡之后的最优解

Apache IoTDB

HarmonyOS开发实战:Sensor Service Kit实现新闻智能横竖屏适配

chengxujianke

PAI-TurboX: 面向自动驾驶的训练推理加速框架

阿里云大数据AI技术

人工智能 自动驾驶 云计算 模型训练 模型

HDC2025丨华为HMS for Car MAAN 4.0智能车载解决方案正式发布

极客天地

鸿蒙开发实战:Remote Communication Kit实现新闻跨设备同步

chengxujianke

Fellou Windows版上线,实测生成AI日报+自动发小红书+数据可视化

阿星AI工作室

AI AI应用 AI工具 AI浏览器

鸿蒙开发实战:MDM Kit构建企业级新闻应用的安全管控体系

chengxujianke

HDC 2025 | AI+开源:赋能开发者迈向AI时代

华为云开源

开源 开发者 云原生 前端 华为开发者大会

鸿蒙开发笔记:Network Boost Kit优化新闻应用网络性能

chengxujianke

HarmonyOS开发实战:Input Kit打造新闻应用的智能输入体验

chengxujianke

Mint Blockchain × Crydit: 联手推进 PayFi 生态建设

NFT Research

NFT web3、

数字化智能柔性生产线的新建设模式

优秀

数字化 柔性生产

20w奖金池!魔乐社区国产算力应用创新大赛正式启程

天翼云开发者社区

开发者大赛 AI应用 算力应用

夏至之日,共赴实时 AI 之约:RTE Open Day@AGI Playground 2025 回顾

RTE开发者社区

阿里巴巴Java架构师岗面试题(正式版)!

程序员高级码农

java 程序员‘

鸿蒙开发笔记:Network Kit在新闻应用中的网络请求优化

chengxujianke

HarmonyOS开发笔记:Pen Kit实现新闻应用手写批注功能

chengxujianke

鸿蒙开发笔记:Service Collaboration Kit实现新闻应用服务协同

chengxujianke

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