💎Singleton
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.
Last updated