AS3引用Singleton

时间:2012-07-04 09:14:59

标签: performance actionscript-3 reference singleton

我有一个GameEngine类,它是一个精灵,GameModel是一个Singleton并且拥有大量的数据。

然后我用

获取数据
GameModel.getInstance().variable;

我的游戏引擎现在有很多内容,我想知道如果我在GameEngine中引用GameModel而不是一直创建它会更有效

private var _data:GameModel = GameModel.getInstance();
trace(_data.variable);

我有一种非常强烈的感觉,它会更有效率但是如果有人能让我知道肯定的话,让我知道你是否有可能看到这种方法的缺陷,非常感激,欢呼,rory。

2 个答案:

答案 0 :(得分:4)

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

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

也就是说,完全忘记单身人士,他们比过早优化更加邪恶,但如果必须使用一个,至少将实例存储在客户类的属性中。

答案 1 :(得分:2)

您当然可以将其添加为实例,但我怀疑它会产生明显的差异。过早优化是所有邪恶的根源,并且:)

如果你真的很好奇,你应该尝试对它进行基准测试,看看它是否真的改变了什么。

编辑:哦,是的,正如这里提到的另一个答案 - 可能想完全放弃单身人士。我建议看一下swiftsuspenders https://github.com/tschneidereit/SwiftSuspenders/用于依赖注入(甚至是机器人插件,用于一个很棒的轻量级MVC解决方案,包括swiftsuspenders)。

相关问题