Maison > Java > javaDidacticiel > Comment une énumération Java implémente-t-elle le modèle Singleton ?

Comment une énumération Java implémente-t-elle le modèle Singleton ?

DDD
Libérer: 2024-12-02 00:02:11
original
689 Les gens l'ont consulté

How Does a Java Enum Implement the Singleton Pattern?

Implémentation de Singleton avec une énumération : dévoilement du mécanisme

Le concept d'implémentation du modèle de conception Singleton à l'aide d'une énumération en Java soulève des questions concernant l'instanciation . Pour approfondir le fonctionnement interne, examinons l'extrait de code fourni :

public enum MySingleton {
     INSTANCE;   
}
Copier après la connexion

Au départ, il est impératif de noter que la déclaration enum ci-dessus crée un constructeur vide implicite. Cependant, par souci de clarté, rendons-le explicite :

public enum MySingleton {
    INSTANCE;
    private MySingleton() {
        System.out.println("Here");
    }
}
Copier après la connexion

Maintenant, créons une classe de test avec une méthode main() pour observer le comportement :

public static void main(String[] args) {
    System.out.println(MySingleton.INSTANCE);
}
Copier après la connexion

Lors de l'exécution de ceci code, vous serez témoin du résultat suivant :

Here
INSTANCE
Copier après la connexion

La question se pose maintenant : comment MySingleton est-il instancié ? La réponse réside dans la nature des champs d'énumération. Ils agissent comme des constantes de compilation mais sont simultanément des instances du type enum correspondant. Leur construction se produit lorsque le type enum est référencé pour la toute première fois, ce qui se produit dans la méthode main() dans notre cas.

Par conséquent, il est crucial de comprendre que les champs enum sont essentiellement des instances de leur type enum, fournissant un mécanisme pratique pour appliquer le modèle Singleton sans avoir besoin d'une instanciation explicite à l'aide de new.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal