Junior
Singleton dizayn nümunəsi nədir?
sobes.tech Süni İntellekt
AI-dan cavab
Singleton nümunəsi, bir sinifin yalnız bir nümunəsinin olmasını təmin edir və ona qlobal giriş nöqtəsi təqdim edir.
İstifadə olunur, yalnız bir resurs nümunəsinə ehtiyac olduqda, məsələn:
- Konfiqurasiya meneceri
- Verilənlər bazası əlaqə hovuzu
- Loglayıcı
Tətbiqlər:
-
Lazımi İstifadə (Lazy Initialization): Nümunə ilk müraciətdə yaradılır.
public sealed class Singleton { private static Singleton? instance = null; private static readonly object lockObject = new object(); private Singleton() { } // Özəl konstruktor public static Singleton Instance { get { if (instance == null) { lock (lockObject) { if (instance == null) { instance = new Singleton(); } } } return instance; } } } -
Statik İstifadə (Eager Initialization): Nümunə sinif yüklənərkən yaradılır.
public sealed class Singleton { private static readonly Singleton instance = new Singleton(); private Singleton() { } // Özəl konstruktor public static Singleton Instance { get { return instance; } } }Üstünlük: çoxlu iş parçacığı təhlükəsizliyi, daha sadə tətbiq. Dezavantaj: nümunə istifadə olunmasa belə yaradılır.
-
Lazy<T>istifadə ilə:.NET Framework daxilində lazy başlatma dəstəyi təmin edir.public sealed class Singleton { private static readonly Lazy<Singleton> lazyInstance = new Lazy<Singleton>(() => new Singleton()); private Singleton() { } // Özəl konstruktor public static Singleton Instance { get { return lazyInstance.Value; } } }Üstünlük: çoxlu iş parçacığı təhlükəsizliyi və lazy başlatma hazır, daha təmiz kod.
Singleton-in üstünlükləri:
- Nümunə sayını idarə etmək.
- Qlobal giriş nöqtəsi.
- Lazy başlatma (bəzən tətbiqlərdə).
Singleton-in çatışmazlıqları:
- Yeganə məsuliyyət prinsipini pozur.
- Birlik testlərini çətinləşdirir.
- Koda güclü bağlılıq gətirə bilər.