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
DDDoriginal
2024-11-03 17:57:02356parcourir

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>

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>

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!

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