假设我有一个类MainActivity
。
这包含许多存储在字段中的对象,例如Player
、Enemy
、Level
等的实例。每个对象需要能够引用所有其他对象。
解决这个问题的最佳方法是什么?
将这些字段设为静态,并相应地引用它们,即
MainActivity.player.setHealth(0);
为每个字段创建 getter 方法,并简单地向每个对象传递对
MainActivity
的引用,以便它们可以调用这些 getter 方法,即mainActivity.getPlayer().setHealth(0);
向每个对象传递对每个其他对象的引用,并将这些引用存储在每个对象内的字段中,以便可以直接引用它们,即
player.setHealth(0);
最佳答案
不是真正的答案,只是给您一些提示。
你的播放器应该像这样:
public class Player
{
private static Player _player = null;
int _health;
...
public static Player getInstance()
{
if (_player == null)
_player = new Player(...);
return _player;
}
public void increaseHealth(int amount)
{
_health += amount;
}
}
然后,在应用程序的任何部分,当您需要播放器时,您可以执行以下操作:
Player p = Player.getInstance();
并且你将一直得到同一个玩家。您可以对级别类别执行类似的操作,因为任何时候只有 1 个级别处于 Activity 状态。
然而,Enemy 类需要不同的方法。我会在 Level 类中创建一个列表,然后像这样获取它们:
Level l = Level.getInstance();
List<Enemy> enemiesOnLevel = l.getEnemies();
// do something with them
关于android - 在对象之间共享实例的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20901816/