写点什么

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

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

关注

评论

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

北纬科技三步走完成DevOps转型

阿里云云效

云计算 阿里云 DevOps 云原生 #运维

Web 键盘输入法应用开发指南(1) —— 基本概念

天择

JavaScript 键盘 输入法

Jira组织架构管理哪家强?

龙智—DevSecOps解决方案

Jira组织架构管理 Jira组织架构 Jira插件

Nebula 在 Akulaku 智能风控的实践:图模型的训练与部署

NebulaGraph

图数据库 知识图谱 图数据库实战

RMI、JNDI、LDAP介绍+log4j漏洞分析

H

Java 网络安全

亚信科技AntDB与华为鲲鹏完成产品互认证

亚信AntDB数据库

AntDB 华为鲲鹏

开年上云,寻找“好云”推荐官——千元大奖等你赢

阿里云弹性计算

征文活动 玩转ECS

加密货币使得俄罗斯更容易规避制裁

CECBC

「前端CI/CD系列」第二篇:如何用建木CI更新七牛云CDN证书

Jianmu

CDN 自动化运维 七牛云 建木CI

电动汽车行业蓬勃发展,是时候关注电动汽车软件了

龙智—DevSecOps解决方案

电动汽车 电动汽车市场 电动汽车软件

动态规划习题(1)-个人分析

netbanner

【C语言】判断语句以及分支语句《详细讲解》

謓泽

C语言 2月月更

合规性管理101:流程、规划和挑战

龙智—DevSecOps解决方案

合规性 合规性管理

数字化赋能三农 农行、邮储如何保“质”更保“智”?

CECBC

学习黑客十余年,如何成为一名安全工程师?

网络安全学海

黑客 网络安全 信息安全 渗透测试 WEB安全

利用wvs扫描网站发现一个页面,暴露了错误信息

喀拉峻

网络安全

Guitar Pro教程之如何设置MIDI键盘

懒得勤快

杭州AI开发者Meetup报名开启!

百度大脑

详探 Apache ShardingSphere SQL Parse Format 功能

SphereEx

数据库 sql ShardingSphere SphereEx

TiDB Hackathon 2021 — pCloud : 做数据库上的 iCloud丨pCloud 团队访谈

PingCAP

数据库

网络标准之:IANA定义的传输编码

程序那些事

Java 网络协议 nio 程序那些事 2月月更

元宇宙房地产演绎新“美国梦”

CECBC

虎符交易所2022年首届交易大赛 最高瓜分5万USDT奖励

区块链前沿News

虎符交易所

华为在MWC2022为全球开发者带来HMS创新工具,全面提升消费者体验

最新动态

IM全文检索技术专题(四):微信iOS端的最新全文检索技术优化实践

JackJiang

全文检索 微信 IM 即时通讯IM

免费get | 版本控制软件全功能版

龙智—DevSecOps解决方案

perforce Perforce Helix Core 版本控制软件

物联网平台的基础概念

dgiot

火山引擎举办视频云科技原力峰会,发布面向体验的全新视频云产品矩阵

字节跳动视频云技术团队

音视频

2021年证券应用活跃度高速提升,用户粘性进一步释放

易观分析

证券市场

5G时代的海洋之歌

脑极体

墨天轮国产数据库沙龙 | 张玮绚:TDengine,高性能、分布式、支持SQL的时序数据库

墨天轮

数据库 tdengine 国产数据库

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