首页 > 其他 > 详细

单例模式Singleton – 学习HeadFirst设计模式记录

时间:2015-06-06 18:09:06      阅读:208      评论:0      收藏:0      [点我收藏+]

 

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

 

1、单例模式实现

  
#include <windows.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;

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

    return 0;
}

 


单例模式Singleton – 学习HeadFirst设计模式记录

原文:http://www.cnblogs.com/ant-wjf/p/4556982.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!