3

我正在寻找一段时间,但我想没有问题我可以真正找到我的问题的答案。

我正在用java开发一个基于文本的RPG游戏,我的地图被分成几个区域,保存在数据库中,因为它的数据量太大而无法将其存储在内存中。总是加载一个包含 * 字段的区域。每个字段可以包含 0..* NPC、物品、道具……

现在我的问题是,每次玩家走进一个场地时,该场地上的所有 NPC(可能还有它的邻居)都应该是可见的,这使得在场地中保存 NPC 引用变得很有意义。另一方面,NPC 应该能够自由地四处走动,如果 NPC 能够提供关于他们目前在哪个领域的参考资料,那就更容易了。

我现在读了很多关于循环依赖的文章,我很确定这是解决这个问题的最丑陋的方法。我目前正在考虑的是存储每个区域中 NPC 的引用以及 NPC 中的字段的引用。那将是一种中间方式,唯一的大问题是将 NPC 从一个区域移动到另一个区域,但至少这种情况不会经常发生。

现在我要求的是某种模式来解决这个问题,或者只是一个引导我走向正确方向的好主意。如果有人可以帮助我,我会很高兴。

谢谢

4

2 回答 2

1

我意识到这是一个老问题,但希望其他人可能需要这个意见。

我经常看到的是将循环依赖彼此远离,这样它们就不会直接意识到或受到影响。做到这一点的一种方法是引入一个中间人,这将保留两者的引用。在面向对象编程中,将使用接口并让依赖类实现和使用接口。

设计大师所说的更好的选择,改变你的设计,以免最终陷入这种情况(说得容易......)希望这会有所帮助

于 2015-02-26T08:22:54.590 回答
0

如果您使用数据库来存储所有内容,最好在每个项目/NPC/etc 中引用它们的位置(null 表示没有位置)并通过该位置进行查询,而不是在每个位置存储一个列表。

于 2013-04-29T20:56:40.227 回答