不可变架构中的状态管理与事件驱动模式
1. 状态的演变与身份概念
在某些场景下,指针的概念可能失去意义,需要引入其他形式的身份标识。Rumbaugh 对身份的定义解决了随时间改变状态的对象的问题,但当引入不可变性概念时,其价值会降低。对象具有内在身份的原因是为了在随时间变化时提供一致且有意义的行为。例如,咬一口苹果,另一个苹果仍保持完整,若出现异常变化则不符合常理。
在现实世界中,对象会响应刺激而改变状态,并记住该状态,其可观察行为基于当前状态。为使这些行为变化在任何现实世界模型中具有意义,模型中的对象必须具有内在身份。
2. 投影与两种状态
2.1 利用不可变记录建模可变对象
我们的目标是使用不可变记录来建模可变对象。记录并非对象本身,因为记录无法满足对象的可变性需求。相反,记录必须以某种方式表示对象的变化,不可变记录是对象的突变。
我们将不可变记录视为观察到的状态,它们代表我们实际看到并记录的事情。而对象是派生状态,代表我们对这些观察的解释,并会随着新观察的出现而改变。
2.2 两种状态的类比
想象一个电子表格,每个单元格可以输入值或公式。值代表基本测量,即对所建模系统的观察;公式则从这些观察中派生新值,代表派生状态。
从数学角度看,函数是这种概念的类比。通常将 y 写成 x 的函数,绘制出的图像中,垂直直线与图像只会有一个交点,而水平直线则不一定。我们称 x 为自变量,y 为因变量。自变量是观察到的,因变量是派生的。
在软件中,派生状态有时被称为观察状态的投影。纯函数以值为输入,产生无副作用的输出,输出仅取决于输入,是观察状态的投影。派生状态也
超级会员免费看
订阅专栏 解锁全文


被折叠的 条评论
为什么被折叠?



