Merhabalar bu makalede sizlere Singleton tasarım desenini oluşturduğum bir örnek ile anlatmaya çalışacağım.

Nesne yönelimli programlamada yazılan bir sınıf örneğinin her seferinde yeniden kurulmasını ve her seferinden farklı sınıf örneğinin oluşturulmasını engelleyen yani sınıf örneğinin sadece bir kere kurulmasını sağlayan tasarım desenine denir.


Resim-1

Bu tasarım deseninde amaç aynı sınıf üzerinde çalışılmasıdır. Örneğin bir araba sınıfımız olsun.


Resim-2

Nesne yönelimli programlama ilkesine göre sınıfı kurmak için “new” ifadesi kullanılıp, constractor ile sınıf kurulur. Fakat tasarım desenimizde sınıfın constractor ile kurulmasını engelleyeceğiz ve new ifadesi ile sınıfı kuramayacağız. Sınıfımızı class içinde kurup dışarı göndereceğiz.


Resim-3

Burada öncelikle static ifadeli bir instance tanımladık bunu static tanımlamamızın sebebi ise static ifadelerin sınıf kurulmadan çalıştırılabilmesidir. Bir adet de static constractor tanımladık ve instance ile sınıfı içerisinde kurduk. Static constractor sadece sınıf kurulduğunda çalışır ikinci bir kurulumda çalışmaz. Aynı zamanda yazmış olduğumuz constractor private yani dışardan görünmeyecek şekilde yazılmıştır. Kurulan sınıfın dışarıya açık olup kullanılabilmesi için property yazdık ve sadece değer döndüren get bloğunu aldık. Böylece sınıfı dışardan sadece bir kere kurabilir ve kullanabiliriz. Kurulumunu ise şöyle yapıyoruz.


Resim-4

Burada kurulumu new ifadesi ile değil static değerlerin gönderdiği kurulum ile yapmaktayız. Burada iki adet araba tanımladım ve arabalardan birincisinin değerini verdim. Tanımladığım ikinci araba değerine marka yazmadığım halde araba markası birinci araba ile aynı olarak ekrana yazıldı.


Resim-5

Bunun sebebi ise sınıf örneğinin bir kez oluşturulmuş olmasıdır. Bu sınıf örneğini nerede çağırırsanız çağırın verdiğiniz değer aynı kalacaktır. Normal şartlarda bir sınıf kurulurken new ifadesi ile sınıf içerisinde bulunan field değerleri de otomatik olarak kurulmakta ve varsayılan değer almaktadır. Ancak bu tasarım deseninde sınıfı içerde kurduğumuz için değerler aynı kalacaktır.

Bu tasarım deseninin kullanıldığı bazı alanlara örnek verecek olursak loglama mekanizmalarında veya bazı servis çalışmalarında kullanılabilir.

Tekrar görüşmek dileğiyle iyi çalışmalar

Bu konuyla ilgili sorularınızı http://forum.mshowto.org linkini kullanarak ulaşacağınız forum sayfamızda sorabilirsiniz.

Referanslar

www.mshowto.org