2010-11-01 72 views
-1

可能重复:
What is a singleton in C#?Singleton模式

可一些身体请给我解释一下单例模式?在c#请问,它是什么用于

+0

有解释:“为什么单是邪恶的”,如果没有正确地应用了许多文章,也许你应该阅读然后再决定在您的项目中使用它。 – 2010-11-01 08:15:26

回答

4

单例是一个类,它只允许创建自己的一个实例。

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://en.wikipedia.org/wiki/Singleton_pattern

+0

经常使用的线程安全单例模板:http://ilyatereschuk.blogspot.com/2013/12/c-simple-singleton-blank-for-everyday.html – 2013-12-24 06:54:40

3

单身模式是一种只允许创建自己的一个实例的类。如果有人试图创建另一个实例,他们只会得到第一个实例的引用。

由于人们倾向于将其视为上帝对象,他们只是倾倒各种各样的东西,另外还因为它可能使单元测试变得复杂,所以受到很大的嘲笑。但它有它的位置,如果你知道你在做什么,就像goto和函数的多个返回点:-)

3
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(); 
    } 
} 
+0

我非常确定这一点能够正确地工作,您的获取需求将:返回实例?? (instance = new SingleTonSample());否则当您调用静态方法Instance时,实例将始终为空,并且您将始终返回SingleTonSample的新实例,该实例恰好不是单实例实现。 – eesh 2011-08-30 17:33:42

+0

@eesh。我写了'return instance ??新的SingleTonSample()'不返回'返回新的SingleTonSample()',尝试它,然后说我确定。 – 2011-09-03 04:40:57

+0

@eesh,其实''实例??新的SingleTonSample()'当实例为null时创建一个实例。 – 2011-09-03 05:51:25