Singleton Deseni Nedir?

Bir singletonun matematiksel konsepti, sadece bir tek sayı içeren bir sayı kümesidir. Yazılım mühendisleri ve programcılar bu kavramı, belirli bir bilgiye yalnızca bir defa erişilen ve her zaman aynı komut ya da bilgiyi içeren belirli programlara erişilen, tek bir kalıp olarak adlandırılan bir şeye çevirmişlerdir. Singleton paterni, Java gibi global bir değişken tanımlamak için programlama dillerinde, aynı sistemde kullanılan ve bir çok kez yerine sadece bir kez tanımlanması gereken bir bilgi parçasını tanımlamak için kullanılır.

Çoğu programlama dilinde, bir programın çalışabilmesi için önce çevresi hakkında ek bilgi parçaları gerektirir. Programa özgü bilgilerin çoğu, kendi program kodunda bulunur; bununla birlikte, bir program sıklıkla, içinde çalıştığı işletim sisteminin sürümü, çalıştırıldığı donanım ve programın kendisine özgü olmayan diğer özel bilgiler gibi şeyler hakkında da değişken bilgiler gerektirir. Genellikle bu bilgi, genellikle programdan ayrı bir dosyada bulunan bağımsız bir programlama kodu parçası olan sınıf veya nesne denilen bir şeyde bulunur, böylece birçok farklı programa aynı anda erişilebilir.

Bir programlama dili tekil tonu kullanmıyorsa, bir nesnedeki bilgileri gerektiren her program, nesneyi, programdaki nesnede hangi bilgiye ihtiyaç duyduğunu belirten bir parametre kümesiyle açarak erişir. Bu nedenle, farklı bir program nesneyi her açışında, bilgisayarın belleğinde farklı bir nesne örneği oluşturulur. Nesnenin her örneği, onu açan her programın özel gereksinimlerine bağlı olarak farklı bilgiler içerebilir.

Java gibi singleton desenini kullanan bir programlama dili bir programı çalıştırmaya başladığında, program ilk önce bilgi alması gereken nesneleri arar. Bir nesne zaten açık değilse, nesneyi belirli parametreler olmadan açar ve nesnede bulunan tüm bilgileri tüm programlar için kullanılabilir hale getirir. Nesne zaten açıksa, yalnızca nesnedeki bilgileri okur ve devam eder. Bu şekilde, bir singleton deseni kullanan bir nesnede bulunan bilgiler her zaman aynıdır, bu nedenle nesnenin birçok farklı sürümünü aynı anda açmaya gerek yoktur. Bu, bilgisayarın belleğinde yer tasarrufu sağlar ve aynı zamanda hızı da artırabilir; çünkü diğer programlar nesnenin yeni bir sürümünü oluşturmak için zaman harcamak zorunda kalmadan bilgiye erişebilir.