Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Melaksanakan Corak Reka Bentuk Singleton dalam C?

Bagaimana untuk Melaksanakan Corak Reka Bentuk Singleton dalam C?

DDD
DDDasal
2024-11-03 17:57:02358semak imbas

How to Implement the Singleton Design Pattern in C  ?

Singleton dalam C

Dalam C , terdapat beberapa cara untuk melaksanakan corak reka bentuk Singleton, teknik yang memastikan kelas hanya mempunyai contoh tunggal. Berikut ialah dua pendekatan biasa untuk mencipta kelas Singleton:

Singleton Klasik dengan Pulangan Penunjuk

Dalam kaedah ini, kelas Singleton mengembalikan penunjuk kepada contohnya:

<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>

Walau bagaimanapun, pendekatan ini mempunyai potensi isu jika kaedah FreeInstance() dipanggil semasa objek masih mempunyai rujukan. Untuk menangani perkara ini, elakkan membebaskan objek Singleton secara manual.

Singleton dengan Reference Return

Memulangkan Singleton sebagai rujukan ialah pendekatan lain yang menawarkan keselamatan yang lebih baik:

<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>

Pelaksanaan ini memastikan bahawa anda tidak boleh memusnahkan objek Singleton secara tidak sengaja.

Pertimbangan Tambahan

  • Jadikan pembina peribadi untuk mengelakkan langsung penciptaan objek.
  • Timpa pembina salinan lalai dan pengendali tugasan untuk menghalang penyalinan.
  • Gunakan kaedah statik untuk mengakses tika Singleton, menjamin penciptaan dan pemusnahannya sekali sahaja.

Untuk bacaan lanjut dan amalan terbaik tentang reka bentuk Singleton, rujuk sumber yang dicadangkan:

  • [Singleton: How Should It Be Used](https://refactoring.guru/design-patterns /singleton)
  • [C Singleton Design Pattern](https://www.learncpp.com/cpp-tutorial/singleton-design-pattern/)

Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Corak Reka Bentuk Singleton dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn