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