Table of Contents
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); } }