A Singleton tervezési mintát akkor használjuk ha egy osztály példányosítását csak egyszer szeretnénk megengedni.
class MohoSingleton { private static volatile MohoSingleton instance = new MohoSingleton(); private MohoSingleton() { } public static MohoSingleton getInstance() { return instance; } }
Ennek a kódnak van egy hátránya. Ha kell, ha nem futási időben létrejön.
final class LustaSingleton { private static volatile LustaSingleton instance = null; private LustaSingleton(){ } public static LustaSingleton getInstance(){ if(instance == null) { synchronized (LustaSingleton.class) { instance = new LustaSingleton(); } } return instance; } }
Dupla ellenőrzésre akkor van szükség, ha több szállal dolgozunk. Ha két külön száll is létrehozhatja a példányt, akkor kétszeres ellenőrzést használunk:
class HarmadikSingleton { private static volatile HarmadikSingleton instance = null; private HarmadikSingleton() { } public static HarmadikSingleton getInstance() { if(instance == null) { synchronized (HarmadikSingleton.class) { if(instance == null) { instance = new HarmadikSingleton(); } } } return instance; } }