我正在寻找一段时间,但我想毫无疑问我能在哪里找到问题的答案。
我正在使用java中的基于文本的RPG游戏,我的地图在几个区域中被分割,保存在数据库中,因为将大量数据存储在内存中是非常大的数据。始终加载一个包含*字段的区域。每个字段可以包含0 .. * NPC,Items,Props,...
现在我的问题是,每次玩家走进一个场地时,这个场上的所有NPC(也许是它的邻居)应该是可见的,这使得在场中保存NPC参考变得非常安静。另一方面,NPC应该能够非常自由地移动,如果NPC能够参考他们目前在哪个领域,那么会更容易。
我现在读了很多关于循环依赖的内容,我很确定这是解决这个问题最丑陋的方法。我现在想的是在每个区域存储NPC的引用和NPC中字段的引用。这将是一个中间道路,唯一的大问题是将NPC从一个区域转移到另一个区域,但至少这种情况不会经常发生。
现在我要求的是解决这个问题的某种模式,或者只是一个让我走向正确方向的好主意。如果有人能帮助我,我会很高兴。
谢谢
答案 0 :(得分:1)
我意识到这是一个老问题,但希望其他人可能需要这个意见。
我经常看到的是将循环依赖性彼此远离,这样他们就不会直接意识到或受到影响。一种方法是引入一个中间人,这将保留两者的参考。 在面向对象的编程中,它将使用接口并使两个依赖类实现并使用接口。
设计专家提出的更好的选择,改变你的设计,以便不会在这种情况下结束(更容易说......) 希望这有帮助
V
答案 1 :(得分:0)
如果您正在使用数据库存储所有内容,最好在每个项目/ NPC / etc中引用它们的位置(对于无位置为null)并通过该查询进行查询,而不是在每个位置存储列表。