发布于2026-07-21 阅读(0)
扫一扫,手机访问
编程范式从诞生到现在,一直在向着更贴近人类思维的方向演进。其中,两大类范式——命令式编程和响应式编程,可以说是两个截然不同的世界观。今天,我们就把它们掰开揉碎了,看看各自到底有什么门道。
简单来说,这就是我们平时用得最多的编程模式。它就像是在写一份详细的操作说明书,告诉计算机每一步该怎么走。比如,先声明一个变量,再给它赋值,然后让两个变量相加,得到结果。
关键在于,一旦这个结果被计算出来,它就固定了。哪怕你后面修改了那两个变量的值,之前算出来的结果也不会跟着变——它已经是一个独立的、被“刻”下来的数值。
int a, b, sum;
a = 3;
b = 4;
sum = a + b;
a = 6;
b = 7;
System.out.println(sum); // 猜猜输出什么?还是7。
这就是命令式编程的典型特征:步骤明确,结果固定,后续的变动不会回溯影响之前的结果。
而响应式编程,走的完全是另一条路。它是一种声明式编程范型,核心思想是“当某物变化时,自动触发相关依赖的更新”。
最直观的例子,就是Excel里的公式。你在C单元格上设置了一个函数SUM(A+B),然后当你改变A或B的数值时,C的值会立刻跟着变。这个“自动响应变化”的行为,就是响应式。
这个理念在2014年发布的《响应式宣言》中被系统性地阐述出来,它描述的是一份构建现代云扩展架构的处方——强调弹性、响应性、消息驱动和韧性。
代码层面,用 projectreactor.io 的 Reactor 库可以简单演示一下这种机制。
首先,在 Gradle 里引入依赖:
dependencies {
// import BOM
implementation platform('io.projectreactor:reactor-bom:2023.0.3')
// add dependencies without a version number
implementation 'io.projectreactor:reactor-core'
}
然后,用 Ja va 写一个最简单的发布-订阅示例:
import reactor.core.publisher.FluxProcessor;
import reactor.core.publisher.UnicastProcessor;
public class Reactor01 {
public static void main(String[] args) {
FluxProcessor publisher = UnicastProcessor.create();
publisher
.doOnNext( event -> System.out.println("receive event: " + event))
.subscribe();
publisher.onNext(1);
publisher.onNext(2);
}
}
这段代码中,我们创建了一个发布者,订阅者会实时收到发布者推送的每一个事件。当调用 onNext(1) 时,订阅者立即打印出“receive event: 1”。这就是响应式编程的精髓:数据流在被推送的过程中,下游的订阅者会实时响应,而不是等着你去拉取。
上一篇:我喜欢,我编程;我编程,我快乐!
下一篇:编程的快乐
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8