写点什么

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

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

关注

评论

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

AI 精准教学平台系统:重塑数字化时代的个性化教育

上海拔俗

嘉为蓝鲸亮相GOPS全球运维大会·2025上海站,共绘智能运维与研发效能发展新蓝图!

嘉为蓝鲸

研发效能 数字化转型 智能运维 研运一体化 IT智能研运

详细指南:添加DNS解析记录的步骤和常见问题

防火墙后吃泡面

AI 智能评审系统:构建高效、公正的数字化评估新范式

上海拔俗

数字化时代下的ITSM软件-ManageEngine卓豪

ServiceDesk_Plus

ManageEngine卓豪

天翼云智慧上云月特惠来袭,智算上云正当时!

天翼云开发者社区

CDN 存储 云主机 算力 云电脑

易搜资料知识付费小程序:一站式资源变现解决方案

微擎应用市场

为什么要做海外营销?全球化时代企业不可或缺的增长引擎

Wolink

跨境电商 电商营销 海外社媒营销 海外营销推广 达人营销

分销积分商城小程序系统:赋能商家的全场景营销解决方案

微擎应用市场

图多多表情包斗图微信小程序:开启斗图新体验,赋能流量变现新可能

微擎应用市场

如何通过Python SDK在Collection中分组检索Doc

DashVector

数据库 AI 检索 大模型 向量

智能 AI 安全隐患排查管理系统:构建主动式网络安全防御体系

上海拔俗

定制化TTS数据实践:解锁语音大模型的无限潜能

数据堂

人工智能 语音合成 语音交互 人机交互 语音大模型

AI 健康档案管理系统:构建智能医疗的数据基石

上海拔俗

慢病成老年人死亡首因!重阳节AQ倡议守护父母健康,从慢病防控开始

Lily

共享菜篮小程序管理系统:菜市场绿色租赁新选择,开启环保便捷新体验

微擎应用市场

AI 毕业生面试系统:重塑数字化时代的人才选拔体系

上海拔俗

合合信息与上海交通大学开展课题合作研究,共探智能文档图像处理前沿技术

合合技术团队

人工智能 大数据 算法

国产全功能GPU发力!摩尔线程亮相CNCC2025展示智算基础设施新成果

新消费日报

AI赋能:下一代海外营销的智能化路径与机遇

Wolink

电商营销 海外社媒营销 海外营销推广 跨境电商运营 达人营销

AI 行为识别系统:从感知到认知的智能进化

上海拔俗

SD-WAN和传统WAN的区别

光联世纪

SD-WAN

AIGC 企业知识库系统:构建智能驱动的组织智慧大脑

上海拔俗

AI 心理测评与教辅系统:构建智慧教育新生态

上海拔俗

什么是多因素身份验证(MFA)

运维有小邓

密码 AD域

AI 智能作业与考试研判分析系统:开启精准教学新时代

上海拔俗

测试脚本生成太慢?我用Dify+自然语言描述,效率提升了300%

测吧(北京)科技有限公司

IDS 和 IPS 日志监控的重要性

运维有小邓

日志管理 日志审计 审计日志 日志管理软件 日志收集

揭秘 MCP Streamable HTTP 协议亲和性的技术内幕

阿里巴巴云原生

阿里云 Serverless 云原生 函数计算

告别手动埋点!Android 无侵入式数据采集方案深度解析

阿里巴巴云原生

android 阿里云 云原生 asm 可观测

嘉为蓝鲸效能洞察平台·CMeas:Excel数据纳入度量体系,更新高效不费工

嘉为蓝鲸

研发效能 数据采集 数据洞察 研发效能度量 研发效能洞察

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