The*_*ght 2 c# singleton design-patterns
我有一个单例类,需要实例化一个对象.
我正在使用这种方法:
public static AppConfig Instance(IConfigManager configManager)
{
if (_instanceHolder == null)
{
lock (LockObject)
{
if (_instanceHolder == null)
{
_instanceHolder = new AppConfig(configManager);
}
}
}
return _instanceHolder;
}
Run Code Online (Sandbox Code Playgroud)
这是在这种情况下实施单身人士的最佳方式吗?
谢谢
在我看来,在这种情况下使用单身人士似乎是一个非常糟糕的主意.第二个调用将完全忽略该configManager参数,因为它会发现已经有一个实例.这违反了最不出意的原则,IMO.
由于各种原因,单身模式通常是令人讨厌的,其中最重要的是可测试性.这个例子更糟糕 - 绝对远离它.
另外,在实现单例模式时,我不会使用双重检查锁定.有关我的首选选项,请参阅我关于单例模式的文章.