💎Singleton
Last updated
Last updated
Bir sınıfın sadece bir örneği olmalıdır ve bu örneğe global bir erişim noktası sağlanmalıdır.
Desene ait yukarıdaki diyagrama bakacak olursak, örneğini istediğimiz sınıfın;
Constructor (oluşturucu metotu) private
olmalıdır. Bunun amacı nesne oluşumunu tek yerden sağlamak. İstemcinin, new
anahtar kelimesini kullanması engellemektir.
Static bir değişken
olmalıdır, referansı tutmak için.
Tutulan referansa erişmek için bir metot olmalıdır, getInstance()
C# Kod Örneği:
Desenin yukarıdaki durumu geçerli gibi duruyor fakat multi-thread uygulamalarda nesnenin daha örneğinin oluşmadığı esnada if (database == null)
durumuna aynı anda birden fazla thread girebilir, bu sayede de o sınıfa ait birden fazla nesne örneği bulunur. Bu kısmı iyileştirme yolunda dillerin bize sağladığı yapıları kullanabiliriz. C# dilinde lock
ile JAVA dili için de synchronized
sayesinde aynı anda sadece bir yapının erişmesini sağlarız.
C# dili için GetInstance()
metotunu düzenleyecek olursak aşağıdaki hali alacaktır.
Bu tasarım deseninin JAVA ve diğer diller için olan uygulamasını bu tasarım deseni için oluşturulmuş klasörde bulabilirsiniz.