【发布时间】:2014-03-05 23:28:12
【问题描述】:
我刚刚通过以下简单代码使我的班级单身:
public sealed class Singleton
{
private static Singleton instance=null;
private Singleton()
{
}
public static Singleton Instance
{
get
{
if (instance==null)
{
instance = new Singleton();
}
return instance;
}
}
}
现在,我还希望能够使用构造函数设置一些属性。但是,我有点担心,因为这是我第一次使用单例。我有以下问题:
我怎样才能拥有其他参数化构造函数,并确保当客户端应用程序使用我的类时,它们会获得单例。
拥有多个带有单例类的构造函数会不会是个坏主意?
什么是多次调用具有不同值的新“参数化构造函数”?
【问题讨论】:
-
外部构造函数破坏了单例的整个想法。你不能自己实例化单例,这就是保持它single的原因。
-
好的,这意味着单例只适用于无状态对象,如服务?
-
单例可以有状态,它只是在所有实例之间共享,并且实例的数量始终等于1。单例通常是无状态的,但这主要是因为它是有意义的,而不一定是必需的。
-
不是一个好主意,单例实例上的设置或初始化方法,或者只是离散属性会更好。 PS,在你做任何严肃的事情之前,你可能想谷歌以获得更好的实施。
-
你用单例解决了什么问题?你在为patternitis 苦恼吗?
标签: c# .net design-patterns singleton