2010-05-25 13 views
6

Lütfen C# içinde Singleton Design Pattern uygulamasının performans kısıtlaması ile uygulanmasının en iyi yolunun ne olduğunu bildirin.C# içinde Singleton Design Pattern uygulamasının performans kısıtlaması ile uygulanmasının en iyi yolu nedir?

+1

Konuştuğunuz "performans kısıtlaması" nedir? – Oded

+0

En hızlı uygulamayı istiyorum. Bu sitedeki bir makaleyi duydum ama ismi hatırlamıyorum. Birisi biliyorsa, lütfen buraya gönderin. –

cevap

4

Jon Skeet en

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

    static Singleton() { } 

    private Singleton() { } 

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

C# in Depth gelen sözcüklerle yazılmış bu ilginç tartışmayı okuyun: evreli değil dan C# Singleton deseni uygulamak için birçok yol, tam lazily yüklenmiş, parçacığı için vardır Güvenli, basit ve son derece performanslı bir versiyon.

İyi sürümü - NET 4'ün Tembel türünü kullanarak:

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() 
    { 
    } 
} 

Çok basit ve iyi bir performans sergiliyor. Ayrıca, örneğe ihtiyacınız varsa IsValueCreated özelliği ile henüz oluşturulup oluşturulmadığını kontrol etmenizi sağlar.

İlgili konular