设为首页 加入收藏

TOP

设计模式笔记之---单例模式(二)
2012-11-06 11:33:20 来源: 作者: 【 】 浏览:1122
Tags:设计模式 笔记 --- 单例 模式

 

    单例模式基本代码如下:

    [cpp]

    /********************************************************************

    filename:   Singleton.h

    created:    2012-09-24

    author:     firehood

    purpose:    firehood 学设计模式之---单例模式

    *********************************************************************/

    #include<stdio.h>

    #pragma once

    class Singleton

    {

    public:

    static Singleton* GetInstance(void);

    private:

    static void Destory(void);

    Singleton(void);

    ~Singleton(void);

    Singleton(const Singleton&);

    Singleton& operator = (const Singleton&);

    private:

    static Singleton* pInstance;

    };

    [cpp]

    /********************************************************************

    filename:   Singleton.cpp

    created:    2012-09-24

    author:     firehood

    purpose:    firehood 学设计模式之---单例模式

    *********************************************************************/

    #include "Singleton.h"

    #include <iostream>

    using namespace std;

    Singleton* Singleton::pInstance = NULL;

    Singleton::Singleton(void)

    {

    }

    Singleton::~Singleton(void)

    {

    }

    Singleton* Singleton::GetInstance(void)

    {

    if(pInstance == NULL)

    {

    pInstance = new Singleton();

    // 注册终止函数(进程退出时调用)

    atexit(Destory);

    }

    return pInstance;

    }

    void Singleton::Destory(void)

    {

    if(pInstance)

    {

    cout《 "释放实例内存"《endl;

    delete pInstance;

    pInstance = NULL;

    }

    }

    客户端调用代码:

    [cpp]

    #include "Singleton.h"

    #include <iostream>

    using namespace std;

    int main(int argc,char* argv[])

    {

    cout《"*************************************"《endl;

    cout《"firehood 学设计模式之---单例模式"《endl;

    cout《"*************************************"《endl;

    Singleton* pInstance1 = Singleton::GetInstance();

    cout《"实例1:"《hex《pInstance1《endl;

    Singleton* pInstance2 = Singleton::GetInstance();

    cout《"实例2:"《hex《pInstance2《endl;

    if(pInstance1 == pInstance2)

    {

    cout《"实例1和实例2为同一个实例"《endl;

    }

    system("pause");

    return 0;

    }

    运行结果:

    *************************************

    firehood 学设计模式之---单例模式

    *************************************

    实例1:003A64E8

    实例2:003A64E8

    实例1和实例2为同一个实例

    请按任意键继续。 . .

    释放实例内存

      

首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇HDU 1517 A Multi.. 下一篇C++中的多态、重载、覆盖与隐藏

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: