1.Singleton模式简介
Singleton模式,中文叫单例模式,也叫单件模式。Singleton模式保证一个类只有一个实例,并提供一个访问它的全局访问点。
2.Singleton模式适用性
在下面的情况下可以使用Singleton模式:
- 当类只有一个实例而且客户可以从一个众所周知的访问点访问它时。
- 当这个唯一的实例应该是通过子类化可扩展的,而且客户应该无需更改代码就能使用一个扩展的实例时。
3.Singleton模式的UML图
Singleton模式UML图
4.Singleton模式代码实现
//CSingleton.h
#ifndef __CSINGLETON_H__
#define __CSINGLETON_H__
//名称:单件模式
//意图:保证一个类仅有一个实例,并提供一个访问它的全局访问点。
class CSingleton
{
private:
CSingleton(); //构造函数设为private(or protected)
public:
static CSingleton* mopGetInstance(); //单件模式的全局访问点
//... 其它函数成员
private:
static CSingleton *mopUniqueInstance;
//... 其它数据成员
};
#endif // __CSINGLETON_H__
//CSingleton.cpp
#include "CSingleton.h"
#include
// 类的全局静态数据成员
CSingleton* CSingleton::mopUniqueInstance = NULL;
// 构造函数
CSingleton::CSingleton()
{
}
// 单件模式的全局访问点函数
CSingleton* CSingleton::mopGetInstance()
{
if (mopUniqueInstance == NULL)
{
mopUniqueInstance = new CSingleton();
}
return mopUniqueInstance;
}
//main.cpp
#include "CSingleton.h"
#include
int main(int argc, char *argv[])
{
CSingleton *mopSingleton = CSingleton::mopGetInstance(); //单例模式应用例子
//... 其它功能代码
system("pause");
return 0;
}