码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-06-06 18:10:03      阅读:98      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!