public class SingletonClass {
private static final SingletonClass SINGLE_INSTANCE = new SingletonClass();
private SingletonClass() {}
public static SingletonClass getInstance() {
return SINGLE_INSTANCE;
}
}
- A private constructor
- A static field containing its only instance
- A static factory method for obtaining the instance
public final class ClassSingleton
{
private static ClassSingleton INSTANCE;
private String info = "Initial info class";
private ClassSingleton()
{
}
public static ClassSingleton getInstance()
{
if(INSTANCE == null)
{
INSTANCE = new ClassSingleton();
}
return INSTANCE;
}
// getters and setters
}
=============Usage============
To use our ClassSingleton, we simply need to get the instance statically:
ClassSingleton classSingleton1 = ClassSingleton.getInstance();
System.out.println(classSingleton1.getInfo()); //Initial class info
ClassSingleton classSingleton2 = ClassSingleton.getInstance();
classSingleton2.setInfo("New class info");
System.out.println(classSingleton1.getInfo()); //New class info
System.out.println(classSingleton2.getInfo()); //New class info
public class SingletonOnDemand {
private SingletonOnDemand () {}
private static class Singleton {
private static final SingletonOnDemand instance = new SingletonOnDemand();
}
public static SingletonOnDemand getInstance () {
System.out.println("create instance");
return Singleton.instance;
}
}
public class DB {
// champs de l'objet
private DB(){
// initialisation des champs
}
private static final DB INSTANCE = new DB();
public static DB getInstance(){
return INSTANCE;
}
}
public final class SomeSingleton {
public static final SomeSingleton INSTANCE;
private SomeSingleton() {
INSTANCE = (SomeSingleton)this;
System.out.println("init complete");
}
static {
new SomeSingleton();
}
}