002.反应式编程的必要性

在实际应用程序中,您可以在许多情况下发现可能的时变变量—例如,GPS位置、温度、鼠标坐标,甚至文本框的内容。所有这些都有一个随时间变化的值应用程序会发生反应,因此是时变的。还有一点值得一提时间本身就是一个时变;它的值一直在变化。在c#这样的命令式编程模型中,您将使用事件来创建响应机制更改,但这可能导致难以维护的代码,因为事件是分散的在各种代码片段之间。

想象一下,一个移动应用程序可以帮助用户在商店中找到折扣和特价商品位于他们的周边地区。我们就叫它Shoppy吧。图1.2描述了Shoppy体系结构。

在这里插入图片描述
图1.2 Shoppy应用程序架构。手机应用程序接收电流并可以通过应用程序服务查询商店和交易。
当有新的交易可用时,应用程序服务将发送推送通知推送通知服务器。

你想从Shoppy中获得的一个重要功能是设置商店图标的大小用户越靠近(从某个最小半径开始),地图上的距离越大,如图图1.3。您还希望系统在更新时将新交易推送到应用程序是可用的。
在这里插入图片描述
图1.3 Shoppy应用程序地图视图。当用户远时从Rx商店,图标是小的(上)左边),当用户靠近时,
图标变大了(在右边)。

在这个场景中,您可以说store.Location、myLocation和iconSize变量是时变的。对于每个商店,图标大小可以写成:

distance = store.Location – myLocation;
iconSize = (MINIMAL_RADIUS / distance)*MinIconSize

因为您使用了时变变量,所以每次在myLocation变量,则在距离变量中触发更改。应用程序最终会根据距离商店的远近做出反应,使商店图标显得更大或更小。注意,为简单起见,我没有处理边界检查允许的最小图标大小,该距离可能为0或差不多了。

这是一个简单的例子,但正如您将看到的,使用反应的强大功能编程模型在于其组合和连接以及划分和连接的能力拆分每个时变变量所推入的值流。这是因为响应式编程让你专注于你想要实现的东西,而不是你自己让它工作的技术细节。这导致了简单易读的代码和消除了大多数的样板代码(如变更跟踪或状态管理)使您偏离代码逻辑的意图。当代码短小精悍时,它的bug更少,更容易掌握。

我们现在可以停止讨论理论上的内容了,这样你就可以看到如何在.NET中借助Rx将响应式编程付诸实践。

——未完待续

译者:重庆教主 20240513

网站:WPF中文网 wpfsoft.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/11436.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unicode字符集和UTF编码

文章目录 前言一、字符集和编码方式二、unicode字符集utf32编码utf8编码utf8编码函数示例utf8解码函数示例 utf16编码utf16编码解码函数示例 总结 前言 本文详细介绍 u n i c o d e unicode unicode 字符集和其相关的三种编码方式: u t f 8 utf8 utf8,…

华为认证存储HCIE有用吗?

首先,对于个人来说,获得华为存储认证可以证明其具备信息存储技术的专业能力 1.专业认可:获得华为存储认证,尤其是HCIE-Storage级别的证书,意味着持有者对信息存储技术有着全面深入的理解,能够设计、部署、…

Java基本数据类型包装类

Java 中的基本数据类型包装类(Wrapper Classes)用于封装对应的基本数据类型,提供了一些额外的功能和操作。 以下是 Java 中的基本数据类型和对应的包装类: 整数类型: byte:Byteshort:Shortint&…

JPA@Entry报错Could not determine recommended JdbcType for Java type

问题很明显,无法自动决定类型,那就手动告诉该字段。 一、直接上解决方案 如果是一对一的关系用 OneToOne 如果是一对多的关系用 OneToMany 如果是多对一的关系用 ManyToOne 二、另一个无空构造函数的问题 使用注解后,注解报错找不到空的…

实训八:使用jQuery技术实现企业信息展示系统的相关功能

实训八:使用jQuery技术实现企业信息展示系统的相关功能 1.题目 使用jQuery技术实现企业信息展示系统的相关功能。 2.目的 (1)掌握jQuery的基本知识。 (2)掌握jQuery的应用方法。 (3)进一步理解Ajax程序的设计方法。 (4)会利用所学知识设计简单的应用程序。 3.内容 用jQuery技术…

【SpringBoot记录】从基本使用案例入手了解SpringBoot-数据访问-更改DataSource(2)

前言 通过上一个数据访问基本案例成功可以发现,SpringBoot在数据访问案例中也做了许多自动配置,上节只分析了其中的Properties。 而在自动配置包的jdbc下 还有其他配置文件。 根据名称可以大致了解他们的作用: DataSourceAutoConfiguration…

如何8步完成hadoop单机安装

前言 Hadoop是一个开源框架,用于存储和处理大规模数据集。 系统要求 Ubuntu 20.044GB(建议8GB)hadoop-3.3.6 步骤1:更新系统 打开终端并输入以下命令来更新您的系统: apt update 步骤2:安装Java Had…

卸载RabbitMq

卸载RabbitMQ的方法取决于您最初安装它时所使用的工具和平台。以下是在一些常见Linux发行版中卸载RabbitMQ的步骤: 对于基于Debian或Ubuntu的系统(使用APT) 停止RabbitMQ服务: sudo service rabbitmq-server stop # 对于使用Syst…

AOP(面向切面编程)详解

AOP(面向切面编程)详解 面向切面编程(AOP)是一种编程范式,旨在通过将横切关注点(例如日志记录、事务管理、安全性等)与业务逻辑分离来提高代码的模块化。AOP是OOP(面向对象编程&…

uniapp 使用renderjs的一些详细介绍

一、简介 官方链接:uniapp官网中的renderjs方法的详细介绍 二、renderjs 定义 renderjs是一个运行在视图层的js。它比WXS更加强大。它只支持app-vue和web。 作用: 大幅降低逻辑层和视图层的通讯损耗,提供高性能视图交互能力。在视图层操作d…

.Net8.0 Blazor Hybird 桌面端 (WPF/Winform) 发布到 Win7+

.Net8.0 Blazor Hybird 桌面端 (WPF/Winform) 实测可以完整运行在 win7sp1/win10/win11. 如果用其他工具打包,还可以运行在mac/linux下, 传送门BlazorHybrid 发布为无依赖包方式 安装 WebView2Runtime 1.57 MB或136 MB 测试DEMO 发布为依赖包方式 安装 WebView2Runtime 1.…

python Pandas 操作

Pandas 介绍 Pandas 是一个功能强大的 Python 数据分析工具库,常用于数据处理与分析工作。它为 Python 提供了快速、灵活以及表达能力强的数据结构,旨在简化“实际工作中”的数据操作,使得 Python 成为一种强大而高效的数据分析环境。 核心特…

抱怨无用,行动破局

故事的开始 这个专栏,以及本文的目的,是为了记录我从创立盘多啦这个平台开始,到后续的发展历程的专栏。同时也是给自己一个坚持的动力和警醒的作用。 首先,我是一名程序员,并且对于自身感兴趣的东西,都有…

PID控制详解

PID 控制详解 一、 PID 控制简介 PID( Proportional Integral Derivative) 控制是最早发展起来的控制策略之一,由于其算法简单、鲁棒 性好和可靠性高,被广泛应用于工业过程控制,尤其适用于可建立精确数学模型的确定性控制系 统。 在工程…

【仅1月出刊】普刊广涉计算机、社科、教育、法学等多领域!

【欧亚科睿学术】 1 EURASIA JOURNAL OF SCIENCE AND TECHNOLOGY 终审周期 仅1月出刊(知网收录) 《欧亚科学技术杂志》 Print ISSN:2663-1024 Online ISSN:2663-1016 出版社:UPUBSCIENCE 【简介】本刊致力于传播…

【C语言】指针(一)

目录 一、内存 1.1 ❥ 理解内存和地址的关系 1.2 ❥ 编址 二、指针变量 2.1 ❥ 取地址操作符(&) 2.2 ❥ 指针变量和解引用操作符(*) 2.3 ❥ 指针变量的大小 三、指针类型的意义 3.1 ❥ 指针的解引用 3.2 ❥ 指针-整数 3…

PCIE协议-2-事务层规范-TLP Prefix Rules

2.2.10 TLP前缀规则 以下规则适用于任何包含TLP前缀的TLP: 对于任何TLP,TLP中byte0的Fmt[2:0]字段中的值100b表示存在TLP前缀,并且Type[4]位指示TLP前缀的类型。 Type[4]位中的值0b表示存在本地TLP前缀。Type[4]位中的值1b表示存在端到端TL…

企微软件群发:高效沟通,智慧营销的新选择

在数字化时代,高效沟通是企业成功的关键。企微软件群发功能,以其精准、高效、便捷的特点,成为企业与客户、员工、合作伙伴之间沟通的新选择。本文将带您深入了解企微软件群发的优势与应用,助您掌握这一智慧营销的新利器。 一、引…

R语言数据分析案例-巴西固体燃料排放量预测与分析

1 背景 自18世纪中叶以来,由于快速城市化、人口增长和技术发展,导致一氧化二氮(N2O)、 甲烷(CH4)和二氧化碳(CO 2)等温室气体浓度急剧上升,引发了全球变暖、海平面上 升…