2013-04-29 113 views
1

我正在寻找一段时间,但我想这里没有任何问题,我真的可以找到我的问题的答案。避免循环依赖的模式

我正在使用java编写基于文本的RPG游戏,我的地图被分割成几个区域,保存在数据库中,因为数据量过大,无法存储到内存中。总是有一个区域加载其中包含*字段。每个领域可以包含0 .. * NPC,物品,道具,...

现在我的问题是,每次玩家走到一个领域,该领域(也许在其邻居)上的所有NPC应该可见,这使得将NPC参考保存在字段中变得非常谨慎。另一方面,NPC应该能够相当自由地移动,如果NPC能够提供他们目前在哪个领域的参考,那么会更容易些。

我现在读了很多关于循环依赖的内容,我很确定这是解决这个问题的最丑陋的方法。我现在想要的是在每个区域存储NPC的参考资料,并在NPC中存储参考资料。这将是一条中间道路,唯一的大问题是将NPC从一个地方移到另一个地方,但至少这不会经常发生。

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

谢谢

回答

0

如果你使用一个数据库来存储一切,它可能会更好,使每个项目的位置的引用/ NPC的/ etc(空了没有位置)和查询通过,而不是在每个位置存储一个列表。

+0

这一个好主意,但我想将玩家所在的整个区域加载到内存中以避免性能问题。我猜如果我每次玩家移动时都会提出一个查询,并且还想在玩家位置周围的地区找出NPC,这将需要很多时间。我想知道没有更好的选择。 – Grochni 2013-04-29 21:08:03

1

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

我所见过的经常是将循环依赖性彼此远离,以便它们不会直接意识到或影响。做到这一点的一种方法是引入一名中间人,这将保留两者的参考。 在面向对象的编程中,它将使用接口并使相关类实现和使用接口。

由设计大师们说的更好的选择,改变你的设计,以便在这种情况下,不结束(说起来容易......) 希望这有助于

V