一.单件模式的定义
Ensure a class has only one instance, and provides a globel point of access to it.(确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实例)
二.单件模式的结构图释义
在singleton模式图中可以看到,我们通过维护一个static的成员变量_instance来记录这个唯一的对象实例。通过提供一个static的接口Instance来获取这个唯一的实例。
三.代码实现
//sinleton.h
#ifndef __SINGLETON_H__
#define __SINGLETON_H__
#include<iostream>
using namespace std;
class singleton
{
public:
static singleton* create_instance();//获取唯一的对象实例
private:
singleton();
static singleton *psingleton;//记录唯一的对象实例
};
#endif
//singleton.cpp
#include"singleton.h"
singleton* singleton::psingleton = NULL;//对psingleton进行初始化为NULL
singleton::singleton()
{
cout<<"This is singleton ctr."<<endl;
}
singleton* singleton::create_instance()
{
if(singleton::psingleton == NULL)
{
singleton::psingleton = new singleton();
}
return singleton::psingleton;
}
//main.cpp
#include"singleton.h"
int main(int argc, char const* argv[])
{
singleton* psgn1 = singleton::create_instance();
singleton* psgn2 = singleton::create_instance();
return 0;
}
测试:
可见只调用一次构造函数,实例化出一个对象。
1586

被折叠的 条评论
为什么被折叠?



