Singleton Tasarım Kalıbı Nedir?

Singleton tasarım kalıbı, bir sınıfın tek bir örneğini oluşturmak için kullanılır. Buradaki amaç üretilen tek bir nesnenin tüm istemciler tarafından kullanılmasını sağlamaktır.

Kod Örneği

class SingletonObject
        {
            private static SingletonObject _instance = null;
            private static object _lockObject = new object();
 
            private SingletonObject()
            {
            }
            
            //Sınıftan örnek almak için oluşturulan static sınıf
            public static SingletonObject GetInstance()
            {
                lock (_lockObject)
                {
                    if (_instance == null)
                    {
                        _instance = new SingletonObject();
                    }
                }
                return _instance;
            }
}

Sınıfın constructor’ı private yapılarak new anahtar sözcüğü ile yeni nesne üretimi engellenmiş olur. Nesneyi elde etmek için GetInstance static metodundan yararlanırız. Buradaki metod ilk çağırıldığında nesnenin bir örneğini hafızada oluşturur. Bundan sonraki çağrılarda ise hafızadaki nesneyi döndürmesini sağlar.

Singleton tasarım kalıbında bir diğer dikkat etmemiz gereken nokta ise iki farklı thread’in birbirine çok yakın zamanda singleton sınıfını çağırmasıdır. İşlemci mimarisi gereği thread’lerden önce biri sonra ikincisi çağrıldığında iki thread birbirinin sonucuna ulaşamadan yeni örneklendirme yapmasıdır. Bunun önüne geçmek için obje kilitmesi işlemi yapılır. Bunun sonucundan ikinci thread istek yapsa bile birinci thread’in işinin bitmesini bekler.

Bir cevap yazın