我知道那些朋友不是“对抗”问题的粉丝,但是......甚至还有一点点重述,对比部分仍然存在,所以,为什么要隐藏它。
基本上,我想知道何时以及为什么要使用单例或静态类,什么可以提供静态类不能的单例,反之亦然。
很长一段时间我都使用过这两种产品,而且我无法看到为什么我不应该使用其中一种产品的原因。
感谢。
答案 0 :(得分:8)
这两者基本上都是全局变量,有警告。静态类可以防止继承,而Singletons很难看,并且通过属性查找增加了开销。两者都使自动化测试变得困难。
AS3支持全局变量,为什么不使用它们?
静态:
package com.example
{
public class Config
{
public static var VERSION:uint = 1;
}
}
单身:
package com.example
{
public class Config
{
public static var instance:Config = new Config();
public var version:uint = 1;
public function Config()
{
//Boiler plate preventing multiple instances
}
}
}
全局变量:
package com.example
{
public var config:Config = new Config();
}
class Config
{
public var version:uint = 1;
}
现在,假设您只想在生产应用中使用该类的单个实例,则需要多个实例来编写测试。您可以创建公共课Config
,并使用com.example.config = new Config()
重置。引用你的全局变量的所有地方现在都在使用新实例,你甚至可以做一些像继承这样的花哨的东西。
例如:
if(inDebugMode)
{
com.example.config = new DebugConfig();
}
{
com.example.config = new Config();
}