Nesne temelli yazılım mimarilerinde belirlenmiş bazı temel tasarım kalıpları vardır. Bunların en önemlilerinden biri de "Singleton" tasarım kalıbıdır. Bu kalıp, bir sistem içerisinde yalnızca bir nesne kullanılmak istendiğinde çok yararlı olabilmektedir.
Tasarım Kalıbının Gerçeklenmesi
Singleton tasarım kalıbı bir programın yaşam sürecinde belirli bir nesneden sadece bir örneğin olmasını garanti altına alır. Eğer nesne yaratılmışsa, bu kalıp (pattern) sayesinde yeni bir yaratma işlemi yerine bu nesnenin referansı işaret edilir. Aynı zamanda bu kalıp, yaratılan tek nesneye, ilgili sınıfın dışından global düzeyde erişilmesini hedefler. Singleton kalıbında istenilen yalnızca bir nesnenin yaratılması olduğuna göre ilgili sınıfın içinde bir yerde nesnenin oluşturulması gerekir. Bu da statik bir özellik (property) ya da statik bir metot ile mümkündür. Bu statik metot, sınıfın kendi içinde yaratılan nesneyi geri dönüş değeri olarak dönecektir. Bu nesne statik metodun ya da özelliğin içinde yaratılıp yine sınıfın private (gizli) olan elemanına atanır. Tekil olarak yaratılan bu nesneye erişmek için bu private olan elemanın referasına geri dönmek yeterli olacaktır.
Örneğin; bir muhasebe sisteminde ay sonu hesap kesimini yapan sınıf, kredi kartı ile ödeme yapılan bir sistemdeki kredi kartı para çekme işlemini yapan sınıf, uçak iniş kalkışlarının ayarlandığı uçuş yönetimini sağlayan sınıf sistemde sadece bir tane olması gereken sınıflardır. Singleton kalıbı ile bu koşul garanti altına alınmış olur.
Sınıf Diyagramı
Singleton'ın statik yapısını gösteren UML diyagramının basit olmasının sebebi bu tasarım kalıbının kendisinden yaratılmış tek olan nesnenin (instance) referansını tutan basit bir sınıfı içermesidir.
Statik Metodun Uygulaması
Singleton Kalıbının Örnek Kodları