Singleton Deseni Nedir?

İngilizce: Singleton Pattern

Singleton, bir sınıfın uygulama boyunca tek örneğe sahip olmasını sağlayıp paylaşılan kaynak veya konfigürasyona merkezi erişim sunan tasarım desenidir.

Singleton Deseni Nedir?

Singleton, nesne yönelimli programlamada belirli bir sınıftan yalnızca bir örnek oluşturulmasını sağlayan tasarım desenidir. Uygulamanın farklı yerleri aynı örneğe erişir; böylece konfigürasyon, logger veya belirli bir kaynak yöneticisi tek merkezden kullanılabilir.

Tipik uygulamada constructor dışarıya kapatılır, sınıf kendi içinde tek instance tutar ve bu instance’a erişmek için statik bir metot sağlar. Bazı dillerde modül sistemi veya dependency injection container benzer ihtiyacı daha doğal şekilde çözebilir.

Nerede Kullanılır?

  • Konfigürasyon: Uygulama ayarlarını tek noktadan okumak.
  • Logger: Aynı loglama altyapısını farklı modüllerde paylaşmak.
  • Cache yöneticisi: Ortak bellek veya bağlantı nesnesini yeniden kullanmak.
  • Donanım veya dosya kilidi: Aynı kaynağa çakışan erişimi sınırlamak.

Dikkat Edilecekler

Singleton pratik görünse de global state oluşturduğu için testleri zorlaştırabilir. Sıralı çalışan testler birbirini etkileyebilir, paralel çalışmada thread safety sorunları çıkabilir ve kodun gerçek bağımlılıkları gizlenebilir.

Bu nedenle Singleton bir tasarım deseni olarak bilinmeli, ama her paylaşılan nesne için ilk seçenek olmamalıdır. Birçok uygulamada dependency injection, yaşam döngüsünü daha açık yöneterek aynı ihtiyacı daha test edilebilir biçimde karşılar.