HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

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

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

关注

评论

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

请不要再把String或Style直接传递给自定义的组件了!

编程的平行世界

flutter android

软件测试/人工智能丨人工智能会替代软件测试工程师吗

测试人

人工智能 软件测试

web组态(BY组态)接入流程

Geek_195e67

物联网 工业互联网 web组态 组态 by组态

英特尔锐炫A750:性能持续提升,主流玩家高性价比之选

E科讯

软件测试/人工智能|Java Edit Plus 安装与配置指南

霍格沃兹测试开发学社

火山引擎边缘计算用硬核助力赛事直播

火山引擎边缘云

边缘计算 直播 边缘云 边缘云原生

陌陌应用性能持续剖析产品化实践

童子龙

APM javaagent 应用性能监控产品

免费的!十大数据可视化工具软件盘点

2D3D前端可视化开发

数据可视化 可视化软件 可视化工具 信息可视化 可视化设计

ASP.NET Core 8 在 Windows 上各种部署模型的性能测试

EquatorCoco

.net 后端 性能测试 asp

5.5V 至 36V 输入 3A 500kHz 降压转换器

梦笔生花

2023年,梦想实现的一年!

SAP虾客

年终总结 2023年

如何写好一份架构设计评审文档

童子龙

基础架构

如何用ChatGPT来提高独立站博客的生产力

九凌网络

软件测试/人工智能丨如何自学人工智能软件测试

测试人

人工智能 软件测试

软件测试/人工智能|Python数据可视化神器pyecharts教程(三)

霍格沃兹测试开发学社

低代码开发平台通常提供哪些功能?发挥什么作用?

树上有只程序猿

软件开发 低代码 JNPF

神经网络大模型的智慧之源

百度开发者中心

人工智能 nlp 大模型

软件测试/人工智能|Python数据可视化神器pyecharts教程(一)

霍格沃兹测试开发学社

11 月 NFT 动态:交易量增长,Blur 地位加强

Footprint Analytics

区块链游戏 NFT

C 语言入门:如何编写 Hello World

小万哥

c 编程 程序员 后端 软件开发

企业业务场景如何实现自动化连接?

RestCloud

APPlink

基于多维数据库的全面预算软件,实现企业管理数字孪生

智达方通

企业管理 多维数据库 全面预算 全面预算软件

Kafka Broker开小差了~

腾讯云混沌演练平台

kafka 混沌工程

世界第一!蚂蚁图计算TuGraph打破LDBC SNB-BI世界纪录

TuGraphAnalytics

需求测试的实践与思考

老张

工程实践 质量保障 需求评审

DAPP代币质押铸币挖矿系统开发(详情开发)

l8l259l3365

数据驱动构建企业动态全面预算管理架构

智达方通

数据驱动 全面预算管理

从React Hooks看React的本质

canonical

前端 低代码 React

软件测试/人工智能|Python数据可视化神器pyecharts教程(二)

霍格沃兹测试开发学社

客户案例 | 博睿数据全面保障昆仑银行业务稳定性

博睿数据

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