设计模式-单例模式

shienh 2020年01月18日 316次浏览

单例模式:这个系统中只有一个对象的类。如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;
}