初次实现单例模式,等以后学得更深入再结合更具体的场景实现吧,这里推荐一篇博客点击打开链接,讲的很清楚(侵删)。
设计模式:单例模式
内存中只能有一个对象
实现步骤:
1.将构造函数私有化;
2.在类中定义一个静态的指针对象(可为私有,可为公有),并在类外初始化为NULL;
3.定义一个返回值为类指针的静态成员函数
///
/// @file Singleton.cc
/// @author BigDayDreamer(845900796@qq.com)
///
#include <stdio.h>
#include <iostream>
using std::cout;
using std::endl;
//要求:由该类只能生成唯一的对象
//1. 该对象不能是栈对象
//2. 该对象只能是堆对象
//主要作用:用来替换全局变量
//使用场景: 配置文件的读取/词典类的实现/日志系统的输出对象
class Singleton
{
public:
static Singleton * getInstance()
{
if(_pInstance == NULL)
_pInstance = new Singleton();
return _pInstance;
}
private:
Singleton(){}
static Singleton * _pInstance;
};
Singleton * Singleton::_pInstance = NULL;
//Singleton s3;
int main(void)
{
//Singleton s1;//禁止该语句运行, 让其不能通过编译
//Singleton s2;//需要在类之外调用默认构造函数
//Singleton * p1 = new Singleton;
//Singleton * p2 = new Singleton;
Singleton * p1 = Singleton::getInstance();
Singleton * p2 = Singleton::getInstance();
Singleton * p3 = Singleton::getInstance();
printf("p1 = %p\n", p1);
printf("p2 = %p\n", p2);
printf("p3 = %p\n", p3);
delete p1;//不希望该语句编译通过
return 0;
}