Maison > Java > javaDidacticiel > le corps du texte

Guide du débutant sur le modèle Singleton

Linda Hamilton
Libérer: 2024-10-29 06:28:31
original
604 Les gens l'ont consulté

Le Modèle Singleton est l'un des concepts les plus fondamentaux à comprendre. Il est classé comme un modèle de conception de création et il est utilisé pour contrôler la création d'objets, garantissant qu'une seule instance d'une classe particulière existe tout au long de la durée de vie d'une application.

En termes plus simples, cela garantit qu'une classe est responsable de la gestion d'une seule une seule version d'elle-même, et elle donne un accès global à cette seule instance.

Alors, quand/pourquoi utiliser le modèle Singleton, c'est l'une des questions les plus courantes ?

Avant de plonger dans le quand/pourquoi en utilisant les modèles Singleton, il est important de comprendre les énoncés du problème. Chaque modèle de conception est créé en réponse aux défis spécifiques rencontrés par les développeurs.

Énoncé du problème : connexion à la base de données
Nous souhaitons gérer une seule connexion à une base de données dans l’ensemble de notre application. La création de connexions multiples peut entraîner des conflits et un épuisement des ressources.

// first instance
DataConnection dataConnection1 = new DataConnection();

//Second instance
DataConnection dataConnection2 = new DataConnection();
Copier après la connexion
Copier après la connexion

Dans ce scénario, la création de deux instances de DataConnection peut entraîner des problèmes de ressources. Chaque instance peut effectuer des opérations indépendamment, entraînant des conflits et un comportement imprévisible si elles tentent d'accéder simultanément à la même ressource de base de données.
Pour résoudre ce problème, nous avons besoin du modèle Singleton.

Quand devons-nous utiliser le modèle Singleton ?

Le modèle Singleton est en effet populaire, en particulier dans la conception de logiciels, car c'est un outil puissant mais qui peut facilement être utilisé à mauvais escient. Comprenons quand il est approprié d’utiliser le modèle Singleton :

Quand utiliser le modèle Singleton

  1. Quand une seule instance d'une classe est nécessaire à l'échelle mondiale

    Si nous avons besoin d’une classe qui ne doit avoir qu’une seule instance dans l’ensemble de l’application, le modèle Singleton est le meilleur choix ? . Cela garantit que toutes les parties de l'application fonctionnent avec la même instance, maintenant la cohérence et évitant les instances en double qui pourraient gaspiller de la mémoire.

  2. Quand nous avons besoin d'une gestion centralisée des ressources partagées

    Les singletons sont bénéfiques lorsqu'il existe des ressources partagées, telles que des paramètres de configuration, des caches ou des outils de journalisation, qui sont nécessaires à plusieurs parties de la demande. L'accès et la gestion centralisés simplifient la gestion des ressources, en particulier pour les classes qui doivent être accessibles et modifiables globalement.

  3. Quand on veut contrôler l'accès à une ressource

    Les singletons permettent un accès contrôlé à une seule ressource en l'encapsulant dans une classe. Cela les rend utiles lorsqu'une seule connexion ou ressource doit être utilisée à la fois, comme la gestion d'un rédacteur de fichiers pour garantir un accès synchronisé ou une connexion réseau partagée.

  4. Dans les applications multithread ou parallèles

    Dans les applications comportant plusieurs threads, un Singleton peut garantir que les sections critiques ou les ressources partagées ne sont pas accessibles par plus d'un thread à la fois. Un Singleton correctement implémenté peut fournir un accès thread-safe, réduisant ainsi le risque de conditions de concurrence et garantissant qu'une seule instance d'une ressource partagée est accessible simultanément.

Maintenant, nous comprenons le problème et quand l'utiliser, voyons comment résoudre ce problème.

Diagramme UML du modèle Singleton

Le diagramme UML comprend généralement les composants suivants :

  1. Classe Singleton : C'est la classe qui restreint l'instanciation. Il a généralement une variable d'instance statique privée pour contenir l'instance unique.
  2. Constructeur : Le constructeur est privé pour empêcher l'instanciation directe depuis l'extérieur de la classe.
  3. Méthode statique publique : Cette méthode permet d'accéder à l'instance. Si l'instance n'existe pas, il en crée une ; sinon, il renvoie l'instance existante.

Voici une représentation simple du diagramme UML pour le modèle Singleton :

Beginner’s Guide to the Singleton Pattern

Remarque :

  • - : Modificateur d'accès privé (indiquant que la variable d'instance et le constructeur ne sont pas accessibles en dehors de la classe).
  • : Modificateur d'accès public (indiquant que la méthode getConnection() est accessible publiquement).

Implémentation Java

Voici un exemple de modèle Singleton implémenté en Java :

// first instance
DataConnection dataConnection1 = new DataConnection();

//Second instance
DataConnection dataConnection2 = new DataConnection();
Copier après la connexion
Copier après la connexion

Maintenant, si nous voulons obtenir l'instance de Database Connection, nous appelons ses méthodes statiques comme ceci : DataConnection dataConnection = DataConnection.getConnection();.

public class DataConnection {
      private static DataConnection instance = null;

      /*
       * This private keyword in constructor 
       * is to prevent direct instantiation from
       * outside the class.
       */
      private DataConnetion() { }

      /*
       * static method so that we can call 
       * this method outside the class without
       * instantiation object
       */
      public static DataConnection getConnection() {
            if (instance == null) {
                  instance = new DataConnection();
            }
            return instance;
      }

      public void showMessage() {
            System.out.println("Database is connected");
      }
}
Copier après la connexion

Conclusion

Le modèle Singleton est un modèle de conception fondamental qui garantit qu'une seule instance d'une classe particulière existe dans une application. En limitant le processus d'instanciation et en fournissant un accès global à une seule instance, le modèle Singleton permet de gérer efficacement les ressources partagées, telles que connexions à la base de données, paramètres de configuration et enregistreurs. Ce modèle est particulièrement utile dans les scénarios où la cohérence et l'accès contrôlé aux ressources sont cruciaux.

Pour plus d'informations et les meilleures pratiques sur la mise en œuvre efficace du modèle Singleton, reportez-vous à ce guide sur DigitalOcean.

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:dev.to
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