事件驱动编程RxJava

"简化我们日常的事件驱动编程"

Posted by Ariescat on January 29, 2019

RxJava的基本入门可以了解 给 Android 开发者的 RxJava 详解 这篇博文。

它通过Observable这个统一的接口,对其相关的事件,在空间维度和事件维度进行重新组织,来简化我们日常的事件驱动编程。

引用RxJava 沉思录的一段话:

在基于Callback的编程范式中,我们的Callback没有维度的。它只能够响应孤立的事件,即来一个事件,我处理一个事件。假设同一个事件前后存在依赖关系,或者不同事件之间存在依赖关系,无论是时间维度还是空间维度,如果我们还是继续用Callback的方式处理,我们必然需要新增许多额外的数据结构来保存中间的上下文信息,同时 Callback本身的逻辑也需要修改,观察者的逻辑会变得不那么纯粹。

但是RxJava给我们的事件驱动型编程带来了新的思路,RxJavaObservable一下子把我们的维度拓展到了时间和空间两个维度。如果事件与事件间存在依赖关系,原先我们需要新增的数据结构以及在 Callback内写的额外的控制逻辑的代码,现在都可以不用写,我们只需要利用Observable的操作符对事件在时间和空间维度进行重新组织,就可以实现一样的效果,而观察者的逻辑几乎不需要修改。

所以如果把RxJava的编程思想和传统的面向Callback的编程思想进行对比,用一个词形容的话,那就是降维打击

这是我认为目前大多数与RxJava有关的技术分享没有提到的一个非常重要的点,并且我认为这才是RxJava最精髓最核心的思想。RxJava对我们日常编程最重要的贡献,就是提升了我们原先对于事件驱动型编程的思考的维度,给人一种大梦初醒的感觉,和这点比起来,所谓的 “链式写法” 这种语法糖什么的,根本不值一提。

链接

—— Ariescat 记于 2019.01.29


喜迎
春节