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.
İlgili Terimler
Dependency injection, sınıfın ihtiyaç duyduğu bağımlılıkları kendi oluşturmadan dışarıdan almasını sağlayan tasarım desenidir.
Factory DeseniFactory deseni, nesne oluşturma kararını merkezi bir üretici yapıya taşıyarak istemci kodunu somut sınıflara bağımlı olmaktan korur.
Tasarım DeseniTasarım deseni, tekrar eden yazılım tasarımı problemleri için dili ve projeyi aşan, denenmiş çözüm yaklaşımını tarif eder.