zoukankan      html  css  js  c++  java
  • 单例模式Singleton – 学习HeadFirst设计模式记录

     

    单件模式:确保一个类只有一个实例,并提供一个全局访问点。

    1、单例模式实现

      
    #include <windows.h>
    #include <assert.h>
    #include <iostream>

    /*
      单件模式:确保一个类只有一个实例,并提供一个全局访问点。
    */

    class Singleton
    {
    public:
        static Singleton* GetInstance()  /* 单例全局访问点 */
        {
            if (NULL == _pUniqueInstance) /* 延迟初始化。若使用立刻创建方式,就不会有多线程问题,但是程序启动后就会占用资源。 */
            {
                CRITICAL_SECTION cs;             /* 防止多线程冲突 */
                InitializeCriticalSection(&cs);
                EnterCriticalSection(&cs);
                if (NULL == _pUniqueInstance)
                {
                    _pUniqueInstance = new Singleton();
                }
                LeaveCriticalSection(&cs);
                DeleteCriticalSection(&cs);
            }

            return _pUniqueInstance;
        }

    private:
        Singleton() {}  /* 构造器必须为私有的 */

    private:
        static Singleton *_pUniqueInstance;
    };

    Singleton *Singleton::_pUniqueInstance = NULL;  /* 初始化类static变量 */


    2、测试代码

    int main()
    {
        std::cout<<"Singleton Patten."<<std::endl<<std::endl;

        assert(Singleton::GetInstance() == Singleton::GetInstance());
        std::cout<<"单例指针:"<<Singleton::GetInstance()<<std::endl<<std::endl;

        return 0;
    }


  • 相关阅读:
    [HDU6793] Tokitsukaze and Colorful Tree
    [NOI2020]命运
    [NOI2020]美食家
    模拟9
    晚测2
    模拟8
    联考4
    模拟7
    模拟6
    关于数论
  • 原文地址:https://www.cnblogs.com/ant-wjf/p/4556982.html
Copyright © 2011-2022 走看看