Maison > développement back-end > C++ > Comment implémenter le Design Pattern Singleton en C ?

Comment implémenter le Design Pattern Singleton en C ?

DDD
Libérer: 2024-11-03 17:57:02
original
387 Les gens l'ont consulté

How to Implement the Singleton Design Pattern in C  ?

Singleton en C

En C , il existe plusieurs façons d'implémenter le modèle de conception Singleton, une technique qui garantit qu'une classe n'a qu'un instance unique. Voici deux approches courantes pour créer une classe Singleton :

Le Singleton classique avec un retour de pointeur

Dans cette méthode, la classe Singleton renvoie un pointeur vers son instance :

<code class="cpp">class A {
    private:
        static A* m_pA;
        A();
        virtual ~A();

    public:
        static A* GetInstance();
        static void FreeInstance();
        
        void WORK1();
        void WORK2();
        void WORK3();
};</code>
Copier après la connexion

Cependant, cette approche présente un problème potentiel si la méthode FreeInstance() est appelée alors que l'objet a encore des références. Pour résoudre ce problème, évitez de libérer manuellement les objets Singleton.

Singleton avec un retour de référence

Renvoyer le Singleton comme référence est une autre approche qui offre une meilleure sécurité :

<code class="cpp">class A {
    private:
        static A* m_pA;
        explicit A();
        void A(const A& a);
        void A(A &a);
        const A& operator=(const A& a);
        virtual ~A();

    public:
        static A* GetInstance();
        static void FreeInstance();
        
        void WORK1();
        void WORK2();
        void WORK3();
};</code>
Copier après la connexion

Cette implémentation garantit que vous ne pouvez pas détruire accidentellement l'objet Singleton.

Considérations supplémentaires

  • Rendre le constructeur privé pour empêcher les création d'objet.
  • Remplacez le constructeur de copie et l'opérateur d'affectation par défaut pour empêcher la copie.
  • Utilisez une méthode statique pour accéder à l'instance Singleton, garantissant sa création et sa destruction une seule fois.

Pour plus de lectures et les meilleures pratiques sur la conception Singleton, reportez-vous aux ressources suggérées :

  • [Singleton : comment doit-il être utilisé](https://refactoring.guru/design-patterns /singleton)
  • [Modèle de conception C Singleton](https://www.learncpp.com/cpp-tutorial/singleton-design-pattern/)

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