1 gainia
反应式编程(Reactive Programming)这种新的编程范式越来越受到开发人员的欢迎。
在传统的编程范式中,我们一般通过迭代器(Iterator)模式来遍历一个序列。这种遍历方式是由调用者来控制节奏的,采用的是拉的方式。每次由调用者通过 next()方法来获取序列中的下一个值。
使用反应式流时采用的则是推的方式,即常见的发布者-订阅者模式。当发布者有新的数据产生时,这些数据会被推送到订阅者来进行处理。在反应式流上可以添加各种不同的操作来对数据进行处理,形成数据处理链。这个以声明式的方式添加的处理链只在订阅者进行订阅操作时才会真正执行.
Reactive由一系列事件以及发布和订阅这些事件的2个参与方组成的一个序列.
特点:
事件驱动;
异步非阻塞,无需引入线程概念。
推拉机制:数据提供方push,数据处理方拉去pull .
核心概念:
异步响应数据流 Reactive Stream:
功能类似:集合(Collections) ,表象:Java8 Stream.
单向流动;
时间+序列
数据流操作 Stream operators:
功能:操作数据 表象:过滤/合并/映射
产生新的流
观察者模式:
定义了一种1对多的依赖关系,让多个观察者对象同时监听某一主题对象(被观察者)。
这个主题对象的状态发生改变是会同时通知所有的观察者,使他们能够自动更新自己。