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; }
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"); } }
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); }
Lors de l'exécution de ceci code, vous serez témoin du résultat suivant :
Here INSTANCE
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!