[[oktatas:programozás:tervezési minták|< Tervezési minták]] ====== Singleton ====== * **Szerző:** Sallai András * Copyright (c) Sallai András, 2014 * Licenc: GNU Free Documentation License 1.3 * Web: http://szit.hu A Singleton tervezési mintát akkor használjuk ha egy osztály példányosítását csak egyszer szeretnénk megengedni. ===== Mohó singleton ===== 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. ===== Lusta singleton ===== 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és ===== 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; } }