我有一个是Sprite的GameEngine类,还有一个是Singleton并拥有很多数据的GameModel。

然后我得到数据

GameModel.getInstance().variable;

我的游戏引擎现在有很多,我想知道如果我在GameEngine中引用GameModel而不是一直创建它会更有效吗?
private var _data:GameModel = GameModel.getInstance();
trace(_data.variable);

我有一种很强烈的感觉,那就是效率更高,但是如果有人可以肯定地让我知道,并且让我知道您是否可以使用这种方法发现缺陷,那将是万分感谢,欢呼和漫游。

最佳答案

将实例存储在属性中绝对是一个好主意,因为查找会更快,而且还因为它会降低GameEngine对GameModel的实现细节的了解。

例如,假设您在GameEngine类中有很多GameModel.getInstance()调用,而您决定放弃单例行为。您将重写所有这些调用,但是,如果将实例缓存在一个属性中,则只需要重写一行即可。

也就是说,完全忘记单例,它们比过早的优化要严重得多,但是如果您必须使用单例,则至少要将实例存储在客户端类的属性中。

10-06 12:33