Singleton Tasarım Deseni

Çalışma Prensibi

Singleton (Tek Nesne) tasarım kalıbı, bir sınıfın tek bir örneğini oluşturmak için kullanılır. Amaç, oluşturulan nesneye global erişim noktası sağlamaktır. Oluşturulan tek örnek, tüm isteklere kendi üzerinden cevap verir. Sistem çalıştığı sürece ikinici bir örnek oluşturulamaz. Sınıf constrcutor’ı private olduğu sürece sınıf örneği new operatörü ile alınamaz. Geliştirilen teknik bir sınıf ilk çağrıldığı anda statik örnek oluşturulur ve bundan sonraki çağrımlarda tüm istemcilere aynı örnek gönderilir.

Burada dikkat edilmesi gereken nokta;

Çok istemcili (Multi Thread) sistemlerde ilk örnek oluşturulurken güvenli örnekleme yapılması ve oluşturulacak objenin kilitlenmesidir. Kilitleme yapılmaz ise elimizde birden fazla örnek olmuş olur. Bunun sebebi iki farklı thread’ın birbirine çok yakın zamanlarda singleton sınıfını çağırması ve işlemci mimarisi gereği önce biri sonra diğerini çağırıldığında iki thread birbirinin sonucuna ulaşmadan yeni örneklendirme yapmasıdır. Kilitleme (lock) yapılırsa ilk örnek alındığında, ikinci bir thread istek yapsa bile obje kilitli olacağından diğer thread’ın işinin bitmesini bekler. İşlem bitiminden sonra istek yapıldığından oluşturulmuş örnek geri gönderilir. Sisteminiz çoklu istemciye hizmet vermeyecekse bu önlemi almanıza gerek yoktur.

Örnekler:

Typescript =>

C# =>