单例模式:这个系统中只有一个对象的类。如windows的任务管理器,数据库对象。
单例模式的分为饿汉式和懒汉式。
懒汉式: 发现没有对象再构造,碰到多线程是不安全的
饿汉式: 先构造对象,对于构造对象比较积极(推荐)
单例的释放:单例不需要考虑释放,如果要释放的话,可以返回引用。
单例类的构建要点:
- 构造函数要私有
- 私有的当前类的指针变量(引用)
- 提供静态的对外接口。获取单例对象
代码如下:
#include <QCoreApplication>
#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[])
{
QCoreApplication a(argc, argv);
SingleClass::getInstance();
SingleClass::getInstance();
SingleClassHungry::getInstance();
SingleClassHungry::getInstance();
return a.exec();
}