c++中设计模式----单例模式

来源:互联网 发布:驱动人生mac版 编辑:程序博客网 时间:2024/04/30 10:56

单例模式保证一个类只有一个实例,并提供全局访问接口


//Singleton.h

#ifndef _SINGLETON_H_
#define _SINGLETON_H_
class CSingleton
{
public:
    virtual ~CSingleton();
    static CSingleton *GetInstance();//提供全局访问接口
protected:
private:
    CSingleton();
    static bool bInstanced;//判断是否实例化了。
};

#endif

//Singleton.cpp

#include"Singleton.h"
#include<iostream>
using namespace std;
CSingleton::CSingleton()
{
 cout<<"CSingleton()"<<endl;

}
CSingleton::~CSingleton()
{
 cout<<"~CSingleton()"<<endl;
}
bool CSingleton::bInstanced=false;

CSingleton * CSingleton::GetInstance()
{
    if(!bInstanced)
    {
     bInstanced=true;
     return new CSingleton();
    }
    return NULL;

}

//test.cpp

#include<iostream>
#include"Singleton.h"
using namespace std;
void main()
{
    CSingleton *p1=CSingleton::GetInstance();
    CSingleton *p2=CSingleton::GetInstance();
    if(p1!=p2)
    {
     cout<<"single CSingleton object!,test ok!!"<<endl;

    }
    else
    {
     cout<<"multiple CSingleton object!,test failed!!"<<endl;;
    }
    delete p1;
    delete p2;


}


原创粉丝点击