java - 静态类的替代品

标签 java static

所以我目前正在使用一个名为 GameFile 的静态类,它包含游戏实例、当前 map 、玩家位置、玩家名称、玩家资金等。基本上是所有全局信息。我想知道是否有替代方案?

这就是我目前在静态类中设置游戏实例的方式(作为示例):

GameFile.gameInstance = new ChromeGame();

然后当我需要使用我调用的信息时

GameFile.gameInstance.addScreen(SplashScreen).

最佳答案

这就是我在手机游戏中的做法。您可以全面了解 OOP 概念并拥有所有 setter/getter,但在低端移动设备中,这种“OOP”成本很高。

public class GameData {

    public static Model activePlayerModel;
    public static GameMap currentMap;

    public static void load () {
        // read necessary data from external sources. e.g. a file
    }

    public static void updateMap () {
        // update currentMap
    }

    public static Model getActiveModel() {
        // get current model/set default/or read from file and return
    }

    public static GameMap getCurrentMap() {
        // e.g. Create a map or read map from a file, etc
        // return the map
    }

}

现在我可以直接访问 GameData 的成员了。

public class GameScreen extends Screen {

    Model playerModel;

    public GameScreen (Game game) {
        GameData.load();
        playerModel = Settings.activePlayerModel;   
    }

}

关于java - 静态类的替代品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18346659/

相关文章:

java - JAX_RS-MessageBodyProviderNotFoundException : MessageBodyWriter not found for ArrayList

c++ - 如何使用非平凡构造函数构造静态 thread_local 成员

java - 如何逐字节复制二进制文件

Java非空循环会影响线程读取静态变量吗?

java - 如何使用非静态方法?

c - 静态与全局

c++ - Ranged base for loop over 临时引用 C++11

java - 是否有任何 Java 流输入库保留行结束字符?

java - 如何生成 6 位 OTP 号码

java - java中忽略空格和制表符