[[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;
}
}