专栏首页学海无涯Combine理论基础

Combine理论基础

响应式编程(Reactive Programming)

面向异步数据流的编程思想。业界比较知名的响应式框架是 ReactiveX 系列。Rx 也有 Swift 版本 — RxSwift

响应式异步编程

在响应式异步编程中,一个事件及其对应的数据被发布出来,最后被订阅者消化和使用。期间这些事件和数据需要通过一系列操作变形,成为我们最终需要的事件和数据。

观察者模式

观察者模式是设计模式的一种,在软件开发中经常会用到,比如 KVO通知等都用到了观察者模式。观察者模式中有两个角色,一个是被观察者,一个是观察者。比如`一个宝宝在睡觉,爸爸妈妈不能在一直守候在身边,他们自己处理各自的事情,但是一旦听到宝宝的哭声,他们就去看宝宝。这就是一个典型的观察者模式。宝宝是被观察者,爸爸妈妈是观察者(也称作订阅者),只要被观察者发出了某些事件比如宝宝哭声就是一个事件,通知到订阅者,订阅者们就可以做相应的处理工作。Combine 的实现基于观察者模式。

Combine简介

在现代 GUI 编程中,开发者会处理大量事件(包括网络,屏幕输入,系统通知等),根据事件去让界面发生变化。而对异步事件的处理,会让代码和状态变得复杂。而现有的 Cocoa 框架中,异步编程的接口主要有以下这几种:

  • Target/Action
  • NotificationCenter
  • KVO
  • Callbacks

而在实际情况中,由于不同的第三方库,系统框架,业务代码可能采用不一样的方式处理异步事件,会导致对事件的处理分散且存在差异。苹果为了帮助开发者简化异步编程,使代码更加简洁、易于维护,WWDC2019 发布了 Swift 的异步编程框架 — Combine。

核心概念

Combine 框架有三个核心概念

  • 发布者(Publisher):负责发布事件
  • 订阅者(Subscriber):负责订阅事件
  • 操作符(Operator):负责在PublisherSubscriber之间转换事件和数据

响应式编程与Combine的对应关系.png

Combine概览.png

Combine特点

  • 基于泛型:支持泛型
  • 类型安全:Swift 会检查类型安全问题。
  • 组合优先:Apple 建议使用多个自定义Publisher将小部分的事情组合起来。
  • 请求驱动(Request Driven):基于请求和响应的设计思想,消费者向生产者请求某个事务的变化,当变化时生产者给消费者对应的响应。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 12.Any、AnyObject与类型转化

    YungFan
  • 4.Swift中数据类型

    YungFan
  • 1.Swift 介绍

    YungFan
  • ggplot2:结合ggmap绘制地图

    ggmap包整合了四种地图资源,分别是Google、OpenStreetMaps、Stamen和Cloudmade。可以方便的与ggplot进行涂层叠加,实现在...

    三猫
  • silverlight向wcf传递大于8192字节(8k)的字符串

    默认情况下,silverlight在调用wcf时,如果传递的参数长度大于8192字节,即8k,会提示Not Found错误。 解决方法如下: 1、wcf服务端修...

    菩提树下的杨过
  • 资源 | 谷歌发布Quick Draw涂鸦数据集:5000万张矢量图,345个类别

    选自Github 机器之心编译 参与:吴攀、李泽南 还记得谷歌上个月推出的 AutoDraw 吗?这是一个能把你的随手涂鸦变成绘画的人工智能技术工具。谷歌也曾发...

    机器之心
  • 面向对象设计的设计模式(二):工厂方法模式

    工厂方法模式的适用场景与简单工厂类似,都是创建数据和行为比较类似的对象。但是和简单工厂不同的是:在工厂方法模式中,因为创建对象的责任移交给了抽象工厂的子类,因此...

    用户2932962
  • 当公司倒闭时,你在干什么?

    说出来你可能不信,松哥竟然也经历过公司倒闭的事!最近看到我 GitHub 上开源的 vhr 项目 star 数即将过3k,不禁想起做这个项目时候的事,刚过去一年...

    江南一点雨
  • 面向对象设计的设计模式(二):工厂方法模式

    工厂方法模式的适用场景与简单工厂类似,都是创建数据和行为比较类似的对象。但是和简单工厂不同的是:在工厂方法模式中,因为创建对象的责任移交给了抽象工厂的子类,因此...

    用户1740424
  • 技术干货 | 达观数据智能问答技术研究

    在AlphaGo大胜李世石、柯洁之后,人工智能越来越火,智能问答也是其中必不可少的一环。智能问答一般用于解决企业客服、智能资讯等应用场景,实现的方式多种多样,包...

    达观数据

扫码关注云+社区

领取腾讯云代金券