RxJava的基本入门可以了解 给 Android 开发者的 RxJava 详解 这篇博文。
它通过Observable
这个统一的接口,对其相关的事件,在空间维度和事件维度进行重新组织,来简化我们日常的事件驱动编程。
引用RxJava 沉思录的一段话:
在基于
Callback
的编程范式中,我们的Callback
是没有维度的。它只能够响应孤立的事件,即来一个事件,我处理一个事件。假设同一个事件前后存在依赖关系,或者不同事件之间存在依赖关系,无论是时间维度还是空间维度,如果我们还是继续用Callback
的方式处理,我们必然需要新增许多额外的数据结构来保存中间的上下文信息,同时Callback
本身的逻辑也需要修改,观察者的逻辑会变得不那么纯粹。
但是
RxJava
给我们的事件驱动型编程带来了新的思路,RxJava
的Observable
一下子把我们的维度拓展到了时间和空间两个维度。如果事件与事件间存在依赖关系,原先我们需要新增的数据结构以及在Callback
内写的额外的控制逻辑的代码,现在都可以不用写,我们只需要利用Observable
的操作符对事件在时间和空间维度进行重新组织,就可以实现一样的效果,而观察者的逻辑几乎不需要修改。
所以如果把
RxJava
的编程思想和传统的面向Callback
的编程思想进行对比,用一个词形容的话,那就是降维打击。
这是我认为目前大多数与
RxJava
有关的技术分享没有提到的一个非常重要的点,并且我认为这才是RxJava
最精髓最核心的思想。RxJava
对我们日常编程最重要的贡献,就是提升了我们原先对于事件驱动型编程的思考的维度,给人一种大梦初醒的感觉,和这点比起来,所谓的 “链式写法” 这种语法糖什么的,根本不值一提。
链接
—— Ariescat 记于 2019.01.29