Singleton Design Pattern in Java
Singleton makes sure a class has only one object. Everyone in the program uses that same object.
Real life example
A country has only one president. Everybody talks to the same person.
When to use
You need exactly one shared object, such as a logger, app settings or a database connection.
Complete Java example
Save this as Main.java, then run javac Main.java and java Main.
public class Main {
public static void main(String[] args) {
Logger a = Logger.getInstance();
Logger b = Logger.getInstance();
System.out.println(a == b); // true, same object
// Tip: for multi-threading, use an enum: enum Logger { INSTANCE }
}
}
class Logger {
private static Logger instance; // the only object
private Logger() {} // nobody can write new Logger()
public static Logger getInstance() {
if (instance == null) {
instance = new Logger(); // created only the first time
}
return instance;
}
void log(String msg) { System.out.println("LOG: " + msg); }
}Output
true