У меня общее представление о разнице, но я не могу точно определить, что именно отличает базу данных от глобального состояния.
При наивном определении «глобального состояния» база данных обычнонаименьшее приложение-глобальное.Возможно, вы могли бы иметь приложение, которое изменяет базы данных в середине исполнения, но в общем случае оно используется глобально.
Что касается состояния, я не думаю, что мне нужно спорить о том, что база данных содержит состояние.
Так что же отличает базу данных от "плохого" типа глобального состояния?
Этот вопрос возник, потому что я пытаюсь избежать тесной связи, когда объект должен знать о своем родителе.
Например, скажем, вы играете в стратегическую игру, и один изу ваших юнитов есть способность, которая говорит, что когда они наносят урон вражескому юниту, владелец этого юнита теряет х золота, где х - количество нанесенного урона.
Ну, при нормальных обстоятельствах юнит не должензнать, кто его владелец.Владелец - тот, кто управляет устройством, поэтому владелец просто дает команды устройству, и он делает свое дело.
Однако из-за внешних факторов возникает необходимость выяснить, кто является владельцем подразделения.В этом случае атакующий юнит знает юнит, на который он атакует, это нормально.Но теперь, в дополнение к знанию отряда, на которого он нападает, он должен также знать своего владельца, чтобы заставить его потерять 5 золотых.
Я уже отклонился от первоначального вопроса больше, чем предполагал, но еслисостояние игры сохранялось в реляционной базе данных, было бы тривиально запрашивать владельца цели без юнитов, которым нужно было бы напрямую знать, кем был их владелец.Если бы такая база данных была объектом, я бы назвал эту базу данных божественным объектом в том смысле, что она знает все состояние всего и, кроме того, является изменчивой.
Чем же тогда база данных отличается от глобального состояния?