商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > 响应式编程与命令式编程

响应式编程与命令式编程

  发布于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”。这就是响应式编程的精髓:数据流在被推送的过程中,下游的订阅者会实时响应,而不是等着你去拉取。

本文转载于:https://blog.csdn.net/xharvard/article/details/136167119 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注