我目前正在创建地牢爬行者。我在称为“地下城”的一类中处理所有地下城一代,碰撞箱一代,宝藏和敌人一代以及玩家一代。地牢类中创建的每个对象都有一个吸气剂。

在Main类中,我使用动画计时器来处理玩家移动,打开宝物等的所有更新。这需要访问在Dungeon类中创建的许多对象。

我试图更好地了解Java中对象引用的使用和好处。我的问题是:既然我要访问数百次或数千次,那么访问Dungeon类(或与此有关的任何其他类)中的变量的更有效方法是什么?

例如,地牢中的所有宝藏都在ArrayList变量中,该变量是Dungeon类的成员变量。因此,我可以在Main类中检索该数组列表,如下所示:dungeon.getTreasureList()。如果需要在该ArrayList中获取特定项,可以使用:dungeon.getTreasureList().get(i)其中,i是我想要的宝物的索引。这对于打短电话(从组织上来讲)很好,但是对于较长的电话来说确实很混乱,例如:dungeon.getPlayer().topIntersects(dungeon.getCollisions().getWalls())

或者,我可以在Main中创建对宝藏列表的引用,如下所示:ArrayList<Treasure> treasure = dungeon.getTreasureList()。然后,如果需要ArrayList中的特定对象,则可以调用:treasure.get(i)。这样可以清理上面的长调用,使其更像这样:player.topIntersects(collisions.getWalls());。这更容易阅读,因此,我更喜欢此方法。

忽略组织的好处,是创建引用来访问变量以访问信息还是使用更长的格式和getter(例如this dungeon.getTreasureList().get(i))的更好的做法?

看来,通过在调用dungeon.getPlayer().topIntersects(dungeon.getCollisions().getWalls())中为玩家和碰撞创建引用,可以通过使用player.topIntersects(collisions.getWalls());保存两个函数调用。即,一个函数调用dungeon.getPlayer()和一个调用dungeon.getCollisions()

由于在游戏运行时被调用了数千次,因此可以安全地假设我将成千上万个函数调用保存到dungeon.getPlayer()dungeon.getCollisions()中,从而使代码效率更高。我在这个假设中正确吗?

编辑:试图使问题更客观,更少基于观点并纠正了误导性措辞

最佳答案

我认为这个问题很快就会解决,因为它太基于意见了。

但是,如果我提供了自己的意见,我会说让类访问私有集合然后对其进行操作是不好的封装。

最好隐藏这些详细信息,并提供一些方法来提供您想要的信息,而不会泄露私人详细信息。

09-07 07:23