Design pattern:Verrouillage à double tour

De WIKI.minetti.org
Révision de 7 avril 2016 à 16:24 par Jp (discussion | contributions) (Page créée avec « == But == Permettre la gestion de l'instanciation d'une classe dont on veut s'assurer qu'il n'existera qu'une et une seule instance dans une application multithreads. Ce p... »)

(diff) ← Version précédente | Voir la version courante (diff) | Version suivante → (diff)
Aller à : navigation, rechercher

But

Permettre la gestion de l'instanciation d'une classe dont on veut s'assurer qu'il n'existera qu'une et une seule instance dans une application multithreads. Ce pattern est une variante du singleton.

Diagramme de classes

VerrouillageADoubleTour.gif

Code

public class Singleton {

	/**
	 * L'instance du singleton
	 */
	private static Singleton instance;

	/**
	 * Constructeur redéfini comme étant privé
	 */
	private Singleton() {
	}

	/**
	 * Méthode permettant de récupérer l'instance du singleton
	 */
	public static Singleton getInstance() {
		if (instance == null) {
			newInstance();
		}
		return instance;
	}

	/**
	 * Méthode permettant d'instancier le singleton
	 */
	private synchronized static void newInstance() {
		if (instance == null) {
			instance = new Singleton();
		}
	}

}