单例模式基本代码如下:
[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为同一个实例
请按任意键继续。 . .
释放实例内存