单例模式是最常见,也是使用最广泛的一种设计模式,其意图是保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。
单例模式的实现方法有很多种,本文只给出一个最简单的实现,如下:
(1) 使用一个类的私有静态指针指向该类的唯一一个实例
(2) 使用一个共有的静态方法获取该实例。
#include "stdafx.h"
#include <iostream>
using namespace std;
class Singleton
{
public:
~Singleton()
{
if (singleton!=NULL)
{
delete singleton;
}
}
static Singleton* getSingleton();//全局访问点
private:
Singleton(){
}
static Singleton* singleton;//指向该类唯一实例的一个静态指针
};
//静态成员必须在类外初始化
Singleton * Singleton::singleton = NULL;
Singleton* Singleton::getSingleton(){
if (singleton == NULL)//如果该唯一实例不存在,就创建一个
{
singleton = new Singleton();
}
else cout<<"已存在一个实例"<<endl;
return singleton;
}
调用和测试
int _tmain(int argc, _TCHAR* argv[])
{
Singleton* mySingleton = Singleton::getSingleton();//获得了该类的唯一一个实例
Singleton* mySingleton2 = Singleton::getSingleton();//输出“已存在一个实例”,此时mySingleton和mySingleton2同指向该类的唯一实例
return 0;
}