我对这种差异有一种普遍的直觉,但我无法准确指出是什么使数据库与全局状态不同。
对于“全局状态”的简单定义,数据库通常至少是应用程序全局的。可以想象,您可以拥有一个在执行过程中更改数据库的应用程序,但在一般情况下,它是全局使用的。
至于状态,我认为我不需要争论数据库包含状态的情况。
那么,是什么让数据库不同于“坏”的全局状态呢?
出现这个问题是因为我试图避免紧耦合对象需要了解其父对象。
例如,假设您正在玩一款策略游戏,而您的一个单位具有一种能力,即当它对敌方单位造成伤害时,该单位的所有者会损失 x 金币,其中 x 是造成的伤害量。
嗯,在正常情况下,一个单位不应该知道它的所有者是谁。所有者是控制单元的人,因此所有者只需向单元发出命令,它就会做它的事情。
但是,由于外部因素,需要找出单位的所有者是谁。在这种情况下,攻击单位知道它正在攻击的单位,这很好。但是现在除了知道它正在攻击的单位之外,它还必须进一步知道它的所有者才能使所有者损失 5 金币。
我已经偏离了最初的问题,超出了我的预期,但是如果游戏的状态存储在关系数据库中,那么查询目标的所有者将是微不足道的,而单位不需要直接知道他们的所有者是谁。如果这样的数据库是一个对象,我会称该数据库为上帝对象,因为它知道所有事物的整个状态,而且是可变的。
那么,是什么让数据库不同于全局状态呢?