Singleton Design Pattern
Object Oriented Programming de bazı temel tasarım desenleri
vardır. Bunlardan biride “Singleton” tasarım kalıbıdır. Bu kalıp tek bir nesne
kullanacağımız zaman bize kolaylık sağlamaktadır.
Bu tasarım kalıbı ile life cycle boyunca belirli bir nesneden
sadece bir tane olmasını garanti eder. Eğer bu nesne yaratılmışsa, singleton
sayesinde yeni bir yaratma yerine bu nesnenin referansı işaret edilir. Bu
desende yalnızca tek bir nesne yaratılmak istendiği için ilgili sınıfta bu
nesnenin oluşturulması gerekmektedir. Bu da static bir property ya da static
bir metot ile sağlanır. Bu static metot, sınıfın kendi içinde oluşturduğu
nesneyi geri dönüş değeri olarak dönecektir. Bu nesne yaratıldıktan sonra yine
sınıfın içinde olan private elemanına atanacaktır.
Singleton tasarım kalıbı için en iyi örneklerden biri
loglama yapısıdır. Yukarıda Singleton deseni ile oluşturulmuş class yapısını
görmektesiniz. Şimdi kodlar üstünden singleton tasarım desenini inceleyelim.
Singleton tasarım kalıbının avantaj ve dezavantajlarına
bakacak olursak;
Avantajları
- · Nesne kontrolü sağlayarak diğer nesnelerin Singleton nesnelerinden kendi kopyalarını yaratmayı engeller. Böylece tüm nesnelerin yalnızca bir Singleton nesnesinden ulaşıldığından enim olunmasını sağlar.
- · Sınıf yaratım sürecini kontrol etme ve değiştirme özelliğine sahip olduğu için esneklik sağlar.
Dezavantajları
- · Diğer nesneler her referans istediğinde Singleton nesnesi önceden yaratılıp yaratılmadığını her seferinde kontrol edeceği için bu sisteme ek yük bindirir.
- · Singleton nesnesi yaratılırken “new” kullanılamaz. Bazı durumlarda geliştiriciler kaynak koda erişemez ve sınıftan direk olarak bir nesne oluşturamazlar. Buda karmaşıklığa neden olabilir.
- · Singleton nesnenin nasıl sileneceği belli değildir. Bellek yönetimi sağlayan dillerde Singleton kalıbı nesneyi deallocate edebilir çünkü referans olarak bir private tutar. C++ gibi diller de diğer sınıflar nesneyi silebilir fakat bu durum boşta kalan referansa neden olur.
Yorumlar
Yorum Gönder