Bugün sizlerle yazılım geliştirmede kullanılan tasarım desenlerinden Singleton desenini inceleyeceğiz. Singleton ile beraber Thread Safe yöntemini de inceleyeceğiz.Tasarım desenleri kod çokluğunu ve kod tekrarını önlemek amacıyla aynı zamanda bellekte nesnelerin daha az yer kaplamasını sağlamak gibi amaçlar için kullanılmaktadır.
Singleton Tasarım Deseni Nedir ?
Singleton deseni, bir nesnenin bir defa oluşturularak her yerde kullanılmasını amaçlamaktadır. Böylece nesne birden fazla oluşturulmaz ve bellekte çok yer kaplayarak belleği gereksiz yere meşgul etmemektedir. Örneğin; bir projede veri tabanı bağlantı nesnesini bu yöntem ile yazabiliriz. Böylece veri tabanı ile ilgili işlemlerde birden fazla veri tabanına istek atmanız gerekmez.
Tasarım desenini incelemek amacıyla Visual Studio geliştirme ortamını açalım ve bir proje yapalım.
Resim-2
Create A New Project seçeneğine tıklayalım.
Resim-3
.Net Core Console App projesi seçelim ve Next seçeneği ile devam edelim.
Resim-4
Projemize bir isim verelim ve Create seçeneği ile projemizi oluşturalım.
Resim-5
Bir sınıf oluşturalım ve sınıfın kurucu metodunu özel yaprak dışarıdan erişilmesini engelleyelim. Böylece bu sınıf herhangi biri tarafından yeniden oluşturulamayacaktır. Static bir metot ve Static bir nesne oluşturalım. Metodumuzda nesne eğer oluşturulmamış ise oluşturarak gönderelim. Böylece Singleton desenini uygulamış olduk.
Thread Safe Singleton Nedir ?
Yapmış olduğumuz örnekte nesne eğer boş ise yeniden oluşturup gönderiyorduk. Bu yöntem bir soruna sebep olabilir; eğer bu nesneye birden fazla istek gelirse nesne sürekli oluşturulmaya çalışılacaktır böyle bir olayda sistem kilitlenebilir. Bunu engellemek için Thread Safe yöntemini kullanmalıyız.
Resim-6
Burada Lock parametresini kullanarak nesne daha önceden oluşturulmuş ise oluşturulan nesneyi geri göndererek işlem sağlıyoruz. Böylece nesne tekrardan oluşturulmaya çalışılmıyor.
Peki, bu oluşturulan nesne bellekten ne zaman silinmektedir diye düşünüyorsanız, IIS yeniden başlatıldığında veya uygulama Publish edildiğinde oluşturulan nesne de bellekten silinmektedir.
Böylece Singleton tasarım deseni ve Thread Safe yapısını öğrenmiş olduk.
Bir sonra ki makalede görüşmek dileğiyle.
Bu konuyla ilgili sorularınızı alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.
Referanslar
TAGs: .design pattern,singleton,singleton tasarim deseni,thread safe,singleton nedir,yazılım,tasarım deseni,singleton deseni,static,csharp,.net