2010-11-21 17 views
1

Desenleri hakkında okudum ve uygulamam çalışıyorum TekilTekil uygulamam doğru mu? C#

Uygulamam doğru mu? Bunu nasıl geliştirebilirim? Web üzerinde birçok uygulama ............

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

O-iplik güvenli değildir. – Ani

+0

Neden bu konu güvenli değil ve nasıl değiştirirsiniz? – Gigapr

+0

Diğerlerinin belirttiği gibi, Jon Skeet'in bu konudaki sayfasını okumalısınız. Kilitleme, hatta daha iyisi, iki kez kilitleme kilitleme, burada yardımcı olur. – Ani

cevap

2

vardır ... ve this article sağladığını hemfikir SO kadar çok aynı sorular ve bu kadar çok insan var En iyi çözüm!

+0

+1. Ben genellikle 2. versiyona geçiyorum (basit iplik güvenliği) –

1

yana artık System.Lazy sınıf var, ben bu uygulamayı kullanma eğiliminde:

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

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