我正在开发一个游戏,所以我决定使用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/