单例模式:这个系统中只有一个对象的类。如windows的任务管理器,数据库对象。
单例模式的分为饿汉式和懒汉式。
懒汉式: 发现没有对象再构造,碰到多线程是不安全的
饿汉式: 先构造对象,对于构造对象比较积极(推荐)
单例的释放:单例不需要考虑释放,如果要释放的话,可以返回引用。
单例类的构建要点:
构造函数要私有
私有的当前类的指针变量(引用)
提供静态的对外接口。获取单例对象
示例代码如下:
#include <iostream>
using namespace std;
//------------------------------------------------------
//懒汉式
class SingleClass{
public:
static SingleClass* getInstance(){
if(NULL == single){
single = new SingleClass();
}
return single;
}
private:
SingleClass(){
cout<<"new a SingleClass"<<endl;
}
public:
static SingleClass* single;
};
SingleClass* SingleClass::single=NULL;
//------------------------------------------------------
//饿汉式
class SingleClassHungry{
public:
static SingleClassHungry* getInstance(){
return single;
}
private:
SingleClassHungry(){
cout<<"new a SingleClassHungry"<<endl;
}
public:
static SingleClassHungry* single;
};
SingleClassHungry* SingleClassHungry::single=new SingleClassHungry();
//------------------------------------------------------
int main(int argc, char *argv[])
{
SingleClass::getInstance();
SingleClass::getInstance();
SingleClassHungry::getInstance();
SingleClassHungry::getInstance();
return 0;
}