2010-05-25 10 views
6

Bitte lassen Sie mich wissen, wie Sie Singleton Design Pattern in C# mit Leistungseinschränkung am besten implementieren?Was ist die beste Methode zur Implementierung von Singleton-Entwurfsmustern in C# mit Leistungsbeschränkungen?

+1

Was ist die "Leistungseinschränkung", von der Sie sprechen? – Oded

+0

Ich möchte die schnellste Implementierung. Ich habe von einem Artikel auf dieser Seite gehört, erinnere mich aber nicht an den Namen. Wenn jemand es weiß, bitte posten Sie es hier. –

Antwort

2
public class Singleton 
{ 
    static readonly Singleton _instance = new Singleton(); 

    static Singleton() { } 

    private Singleton() { } 

    static public Singleton Instance 
    { 
     get { return _instance; } 
    } 
} 
1

Erst vor kurzem kam ich zu wissen, dass Singleton ein Anti-Muster von vielen betrachtet und sollte vermieden werden. Die sauberere Lösung könnte die Verwendung von DI oder anderen Merkmalen sein. Auch wenn Sie mit Singletons gehen gerade gelesen diese interessante Diskussion What is so bad about singletons?

2

von C# in Depth umschrieben: Es gibt verschiedene Möglichkeiten, das Singletonmuster in C# Implementierung von nicht Thread-sicher zu einem vollständig träge belasteten, Gewinde- sichere, einfache und hochperformante Version.

Beste Version - mit .NET 4 faulem Typ:

public sealed class Singleton 
{ 
    private static readonly Lazy<Singleton> lazy = 
     new Lazy<Singleton>(() => new Singleton()); 

    public static Singleton Instance { get { return lazy.Value; } } 

    private Singleton() 
    { 
    } 
} 

Es ist einfach und funktioniert gut. Außerdem können Sie überprüfen, ob die Instanz mit der Eigenschaft IsValueCreated bereits erstellt wurde oder nicht, falls Sie diese benötigen.

Verwandte Themen