2010-11-21 9 views
1

패턴에 대해 읽었으며 싱글 톤을 구현하려고합니다.내 싱글 톤 구현이 맞습니까? C#

구현이 정확합니까? 어떻게 향상시킬 수 있습니까? 웹에 많은 구현 ............

public sealed class SingletonProxy 
     { 
      private static IInfusion instance; 

      static SingletonProxy() { } 

      SingletonProxy() { } 

      public static IInfusion Instance 
      { 
       get 
       { 
        if(instance == null) 
        { 
         instance = XmlRpcProxyGen.Create<IInfusion>(); 
        } 
        return instance; 
       } 
      } 
     } 
+2

그것은 스레드로부터 안전하지 않습니다. – Ani

+0

왜 이것이 스레드로부터 안전하지 않으며 어떻게 수정합니까? – Gigapr

+0

다른 사람들이 지적했듯이이 주제에 대한 Jon Skeet의 페이지를 읽어야합니다. 잠금 또는 더 나은 이중 체크 잠금은 여기에서 도움이 될 것입니다. – Ani

답변

2

있습니다 ... 그리고 this article가 제공 동의 SO에 많은 동일한 질문, 그리고 많은 사람들이있다 최고의 솔루션!

+0

+1. 나는 원래 2 차 버전 (간단한 스레드 안전성) –

1

이 때문에 우리가 지금 System.Lazy 클래스가, 내가이 구현을 사용하는 경향이 :

public sealed class SingletonProxy 
{ 
    private static readonly Lazy<IInfusion> instance 
      = new Lazy<IInfusion>(XmlRpcProxyGen.Create<IInfusion>); 

    public static IInfusion Instance 
    { 
     get { return instance.Value; } 
    } 
}