Tartalomjegyzék

< Tervezési minták

Singleton

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