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
Libérer: 2024-12-15 02:22:09
original
685 Les gens l'ont consulté

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;
}
Copier après la connexion

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");
    }
}
Copier après la connexion

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);
}
Copier après la connexion

Sortie :

Instance created
INSTANCE
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal