SINGLE INSTANCE
Singleton pattern restricts the instantiation of a class to a single instance. A private constructor hides the class for outside.
class LearningApp {
public static void main(String[] args) {
MyClass A = MyClass.getInstance();
MyClass B = MyClass.getInstance();
MyClass C = new MyClass();
// Error: The constructor MyClass() is not visible
}
}
class MyClass {
private static final MyClass INSTANCE = new MyClass();
private MyClass() {} // private constructor
public static MyClass getInstance() {
return INSTANCE;
}
}
The static keyword is used for unique initialization.
A static class is not automatically a Singleton class.
class LearningApp {
public static void main(String[] args) {
Obj o1 = new Obj();
System.out.println( o1.getInstances() );// count = 1
Obj o2 = new Obj();
System.out.println( o2.getInstances() );// count = 1
}
private static class Obj {
private int count = 0; // it should be declared static
private Obj() {
count++; // without static it is always 1
}
public int getInstances() {
return count;
}
}
}
Last update: 353 days ago