Singleton模式
单例是一个类,它只允许创建自己的一个实例。
C#中一个单例的例子。
public class Singleton
{
private static Singleton _default;
public static Singleton Default
{
get
{
if (_default == null)
_default = new Singleton();
return _default;
}
}
private Singleton()
{ }
public void SomeMethod()
{
// Do something...
}
}
那么你会访问它想:
Singleton.Default.SomeMethod();
经常使用的线程安全单例模板:http://ilyatereschuk.blogspot.com/2013/12/c-simple-singleton-blank-for-everyday.html – 2013-12-24 06:54:40
单身模式是一种只允许创建自己的一个实例的类。如果有人试图创建另一个实例,他们只会得到第一个实例的引用。
由于人们倾向于将其视为上帝对象,他们只是倾倒各种各样的东西,另外还因为它可能使单元测试变得复杂,所以受到很大的嘲笑。但它有它的位置,如果你知道你在做什么,就像goto
和函数的多个返回点:-)
public class SingleTonSample
{
private static SingleTonSample instance;
public static SingleTonSample Instance
{
get
{
return instance?? new SingleTonSample();
}
}
private SingleTonSample()
{
/// todo
}
public void Foo()
{
///todo
}
}
public class UseSingleton
{
public void Test()
{
SingleTonSample sample = SingleTonSample.Instance;
sample.Foo();
}
}
我非常确定这一点能够正确地工作,您的获取需求将:返回实例?? (instance = new SingleTonSample());否则当您调用静态方法Instance时,实例将始终为空,并且您将始终返回SingleTonSample的新实例,该实例恰好不是单实例实现。 – eesh 2011-08-30 17:33:42
@eesh。我写了'return instance ??新的SingleTonSample()'不返回'返回新的SingleTonSample()',尝试它,然后说我确定。 – 2011-09-03 04:40:57
@eesh,其实''实例??新的SingleTonSample()'当实例为null时创建一个实例。 – 2011-09-03 05:51:25
有解释:“为什么单是邪恶的”,如果没有正确地应用了许多文章,也许你应该阅读然后再决定在您的项目中使用它。 – 2010-11-01 08:15:26