前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Combine理论基础

Combine理论基础

作者头像
YungFan
发布2020-02-18 15:35:34
8520
发布2020-02-18 15:35:34
举报
文章被收录于专栏:学海无涯学海无涯
响应式编程(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):基于请求和响应的设计思想,消费者向生产者请求某个事务的变化,当变化时生产者给消费者对应的响应。
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 响应式编程(Reactive Programming)
  • 响应式异步编程
  • 观察者模式
  • Combine简介
  • 核心概念
  • Combine特点
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档