====== OMO - singleton ======
Singleton je objekt, u kterého chceme mít maximálně jednu instanci a chceme vytvoření nové zakázat. V každém programovacím jazyku se to dá řešit trošku jinak. V Javě je řešení přibližně následující.
- Konstruktor nastavíme na private, aby nešel použít. Pokud jej neuvedeme, kompilátor vytvoří implicitní, který je public.
- Vytvoříme si statickou proměnnou, kde tu jednu naši instanci budeme držet.
- Vytvoříme metodu getInstance(), která buď vrátí naši již vytvořenou instanci, nebo pokud je volána poprvé, tak instanci vytvoří (může, protože private tomu nebrání).
===== Logger.java =====
public class Logger {
private static Logger instance;
public static Logger getInstance(){
if (instance == null){
instance = new Logger();
}
return instance;
}
private Logger(){
System.out.println("Vytvarim logger");
}
public void warning(String message){
System.out.println("Warning:"+message);
}
}
===== Main.java =====
public class Main {
public static void main(String[] args) {
Logger a = Logger.getInstance();
Logger b = Logger.getInstance();
a.warning("aaaaaa");
b.warning("bbbbb");
//Zde si overime, ze je to ta sama instance
System.out.println(a);
System.out.println(b);
}
}