Maison >Java >javaDidacticiel >Instance vs méthode statique pour les singletons : laquelle est idéale pour une implémentation basée sur l'énumération en Java ?

Instance vs méthode statique pour les singletons : laquelle est idéale pour une implémentation basée sur l'énumération en Java ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-04 05:48:29647parcourir

  Instance vs Static Method for Singletons: Which is Ideal for Enum-Based Implementation in Java?

Création de singletons avec Enum en Java : différences et considérations

En programmation orientée objet, les singletons sont des classes qui garantissent l'existence d'un seul exemple. Java permet la création de singletons à l'aide d'énumérations. Bien qu'il existe différentes approches pour y parvenir, deux variantes notables incluent :

Option 1 : méthode d'instance

<code class="java">public enum Elvis {
    INSTANCE;
    private int age;

    public int getAge() {
        return age;
    }
}</code>

Cette approche crée une variable d'instance privée (âge) et expose une méthode getter (getAge) pour y accéder. L'accès singleton est obtenu via Elvis.INSTANCE.

Option 2 : méthode statique

<code class="java">public enum Elvis {
    INSTANCE;
    private int age;

    public static int getAge() {
        return INSTANCE.age;
    }
}</code>

Dans cette variante, la variable age est toujours privée dans l'énumération, mais on y accède via une méthode statique (getAge). L'accès au singleton se fait via Elvis.getAge().

Différences et considérations

  • Méthode d'instance :

    • Crée une méthode getter spécifique à l'instance (getAge).
    • Utile lorsque les propriétés spécifiques à l'instance doivent être modifiées ou accessibles.
  • Méthode statique :

    • Offre un accès direct à la variable age sans nécessiter d'instance.
    • Peut récupérer uniquement la valeur de la variable sans la modifier.
  • Considérations sur la liaison :

    • L'option 1 permet une liaison facile aux propriétés qui attendent une instance (Elvis.INSTANCE), tandis que l'option 2 peut nécessiter une liaison à la classe elle-même (Elvis.class).
  • Optimalité :

    • L'approche par méthode statique est plus optimal car il élimine le besoin de créer une instance uniquement pour accéder à un membre statique.

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