Java Language Implémenter le modèle Singleton avec une énumération à un seul élément


Exemple

Les constantes enum sont instanciées quand une énumération est référencée pour la première fois. Par conséquent, cela permet d'implémenter le modèle de conception du logiciel Singleton avec un enum à élément unique.

public enum Attendant {

    INSTANCE;

    private Attendant() {
        // perform some initialization routine
    }

    public void sayHello() {
        System.out.println("Hello!");
    }
}


public class Main {

    public static void main(String... args) {
        Attendant.INSTANCE.sayHello();// instantiated at this point
    }
}

Selon le livre "Effective Java" de Joshua Bloch, une énumération à un seul élément est le meilleur moyen d'implémenter un singleton. Cette approche présente les avantages suivants:

  • sécurité du fil
  • garantie d'instanciation unique
  • sérialisation prête à l'emploi

Et comme le montre la section implémente l'interface, ce singleton pourrait également implémenter une ou plusieurs interfaces.