[enum] Ecrire un singleton en Java 5.0+
Bonjour,
Je trouve l'écriture des singletons en Java relativement chiante, qui plus est quand il s'agit de faire du multithread, et je m'étonne du côté bricolage de la manoeuvre puisqu'à aucun moment la JVM n'est au courant de cette "caractéristique" de la classe...
N'y a-t-il pas un moyen à l'aide des énumérations de Java 5 de faire que la JVM assure comme une grande l'unicité de l'instance? Je m'explique :
Au lieu d'utiliser :
Code:
1 2 3 4 5 6 7 8 9 10 11
|
public class MonSingleton {
private static MonSingleton instanceUnique;
private MonSingleton() { ... }
public static MonSingleton getInstance() {
if (instanceUnique == null)
instanceUnique = new MonSingleton();
return instanceUnique;
}
...
} |
Utiliser une énumération JSE5 :
Code:
1 2 3 4 5 6 7 8 9
|
public enum MonSingleton {
INSTANCE;
MonSingleton() { ... }
// Juste pour faire zoli
public static MonSingleton getInstance() { return INSTANCE; }
...
} |
Est-ce que c'est une bonne idée? Pourquoi?
Ou alors j'ai rien compris à l'utilisation des énums?
Merci les zamis
++