2010-05-25 11 views
6

Por favor, hágame saber cuál es la mejor manera de implementar Singleton Design Pattern en C# con restricción de rendimiento?¿Cuál es la mejor manera de implementar Singleton Design Pattern en C# con restricción de rendimiento?

+1

¿Cuál es la "restricción de rendimiento" de la que habla? – Oded

+0

Me gustaría la implementación más rápida. He oído hablar de un artículo en este sitio, pero no recuerdo el nombre. Si alguien sabe, publíquelo aquí. –

Respuesta

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

    static Singleton() { } 

    private Singleton() { } 

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

Sólo recientemente, vine a saber que Singleton se considera un anti-patrón por muchos y debe evitarse Jon Skeet. La solución más limpia puede ser usar DI u otras características. Incluso si vas con Singleton acaba de leer esta interesante discusión What is so bad about singletons?

2

parafraseado de C# in Depth: Hay varias maneras diferentes de implementar el patrón Singleton en C#, desde No Hilo de seguridad a un totalmente perezosamente cargado de roscas de versión segura, simple y de alto rendimiento.

mejor versión - utilizando .NET de 4 Tipo de Lazy:

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 muy sencillo y funciona bien. También le permite verificar si la instancia se ha creado aún con la propiedad IsValueCreated, si la necesita.

Cuestiones relacionadas