Maison >Java >javaDidacticiel >Comment les énumérations Java peuvent-elles être utilisées pour implémenter le modèle de conception Singleton ?

Comment les énumérations Java peuvent-elles être utilisées pour implémenter le modèle de conception Singleton ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-15 02:22:09686parcourir

How Can Java Enums Be Used to Implement the Singleton Design Pattern?

Implémentation Singleton avec énumérations

Les modèles de conception Singleton garantissent qu'une classe n'a qu'une seule instance, fournissant un accès centralisé. Une approche intéressante pour implémenter des Singletons en Java consiste à utiliser les énumérations.

Considérez l'énumération suivante :

public enum MySingleton {
    INSTANCE;
}

Comment cela fonctionne-t-il, étant donné que l'instanciation est généralement effectuée à l'aide de constructeurs ? La réponse réside dans le constructeur vide implicite pour les champs d'énumération.

Construction explicite

Pour rendre le processus d'instanciation plus explicite, nous pouvons définir un constructeur privé :

public enum MySingleton {
    INSTANCE;
    private MySingleton() {
        System.out.println("Instance created");
    }
}

Instanciation

Lorsque le code suivant fait référence à l'énumération (tel que MySingleton.INSTANCE), le constructeur ne s'exécute qu'une seule fois, établissant l'instance singleton.

public static void main(String[] args) {
    System.out.println(MySingleton.INSTANCE);
}

Sortie :

Instance created
INSTANCE

Points clés

Les champs Enum sont essentiellement des instances de leur type enum. Ils sont construits lorsque l'énumération est référencée pour la première fois. Cette approche fournit un moyen élégant et sécurisé d'implémenter Singleton en Java.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn