Le design pattern Singleton (reloaded)

En savoir plus

1 : public class Singleton { 2 : private static _instance_;
3 :
4 :           private Singleton(){}
5 :
6 :            public static Singleton getInstance() {
7 :                 if (_instance_ == null) //1
8 :     _instance_ = new Singleton(); //2
9 :                         return _instance_; //3
10 :                  }
11 : }
 

La version type d'une classe selon le motif de conception Singleton.
Code © Edis Consulting

 

La partie la plus intéressante de cette implémentation est bien sûr la méthode 'getInstance()'. Tout d'abord, on vérifie si la variable statique '_instance_' a été déjà instanciée. Dans le cas où celle?ci pointerait encore sur 'null', une instance du singleton est créée, assignée à celle-ci puis finalement retournée. Le modifier 'private' sur le constructeur protège d'une instanciation extérieure à la classe.

Toute l'originalité de ce pattern réside dans le fait que c'est la classe qui gère par elle?même son objet instance.

En outre, cette portion de code implémente le concept de 'lazy initialization'. En d'autres termes l'objet n'est instancié qu'à la première demande. L'avantage est évident : si le singleton n'est jamais utilisé alors on ne consomme pas de mémoire.


JDN Développeur Envoyer Imprimer Haut de page