Bu tasarım deseninde bir sınıfın sadece bir tane nesnesin(instance) olması amaçlanmıştır. Projemizde Sadece bir(Singleton) instance olmalı başka bir instance yaratılmamasına izin vermemelidir.
Bir Objeyi nasıl Singleton yaparız;
Bunun için bilmemiz gereken 3 adım vardır;
1.) İlk olarak Sınıfımızın Constructor(yapılandırıcısı) “private” olmalıdır. Bu şekilde diğer sınıflardan bu sınıfın bir nesnesinin üretilmesini engellemiş olduk.
2.) Diğer tüm sınıflar new ClassName() diyerek yeni bir nesne oluşturamayacağına göre, bu sınıfta kendi nesnemizi yaratmamız gerecektir. Bu yarattığımız instance da private ve static olmalıdır.
“object” ile referans verdiğimiz nesne, nesne değişkeni değil, sınıf değişkeni, yani “static” olmalıdır.“ Bir sınıfın sadece bir tane nesnesinin olduğundan emin ol ” kısmını karşılamaktadır.
3.) Son olarak yarattığımız bu singleton objeyi diğer tüm sınıflara servis etmek kaldı. Bunuda public bir method ile yapıyoruz.Bu methodumuzun tek görevi yarattığımız singleton objeyi dönmek. Bu method da static olacaktır.
public class Singleton {
private Singleton(
) {
System.out.println("Creating a singleton object");
}
private static Singleton object = new Singleton();
public static Singleton getInstance(){
return object;
}
Son olarak Spring de Bean lerin defalt scope u Singleton dır.
singletoni bu kadar net anlattığınız için teşekkürler