我正在开发一个游戏,所以我决定使用GameState抽象类来组织它,因此我可以定义菜单,级别和内容。

我有一个称为GameStateManager的类,其中包含所有状态并在需要时更改它们。
将GameStateManager的实例传递给GameState构造函数只是为了获取其状态更改方法是否正确?

如果没有其他方法?

最佳答案

将GameStateManager的实例传递给GameState构造函数只是为了获取其状态更改方法是否正确?


没有。

您只能拥有一个管理者实例和一个引用。这意味着您应该使用基于实例的系统。例如:

GameStateManager instance = GameStateManager.getInstance();


这样,您可以静态访问它。

可以通过以下方式完成:

// in GameStateManager.java

private static GameStateManager instance;

protected static GameStateManager getInstance(){
    if(instance == null){
        instance = new GameStateManager(); //private constructor
    }
    return instance;
}


我假定protected将在这里工作,因为所有GameState实例与GameStateManager都在同一个程序包中。

关于java - 面向对象的Java有一些问题,对吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17644369/

10-10 08:56