单例模式

来源:互联网 发布:运营美工对骂动态图 编辑:程序博客网 时间:2024/06/10 18:49

单例模式是一种对象创建模式,使用单例模式,可以保证为一个类只生成唯一的实例对象。也就是说,在整个程序空间中,该类只存在一个实例对象。
类图
这里写图片描述
为什么使用单例模式?
在应用开发中,常常有如下需求:
*在多线程之间只初始化一个资源。
*在整个程序空间中使用全局变量共享资源。
*在大规模系统中,为了性能考虑,以及需要节省兑现的创建时间等等。
懒汉式

class Singelton{private:    static Singelton *pnew;    Singelton(){        cout << "Singelton构造函数执行" << endl;    }public:    static Singelton* getInstance(){        if (pnew == NULL){            pnew = new Singelton();        }        return pnew;    }    static void SingeltonFree(){        if (pnew != NULL){            delete pnew;            pnew = NULL;        }    }};Singelton *Singelton::pnew = NULL;//类内静态变量的初始化要放在类外面

调试函数:

int main(void){    Singelton *p1 = Singelton::getInstance();    Singelton *p2 = Singelton::getInstance();    if (p1 == p2){        cout << "同一个对象" << endl;    }    else{        cout << "不是同一个对象" << endl;    }    Singelton::SingeltonFree();    system("pause");    return 0;}

运行结果:
这里写图片描述

饿汉式

class Singelton{private:    static Singelton *pnew;    Singelton(){        cout << "Singelton构造函数执行" << endl;    }public:    static Singelton* getInstance(){        return pnew;    }    static void SingeltonFree(){        if (pnew != NULL){            delete pnew;            pnew = NULL;        }    }};Singelton *Singelton::pnew = new Singelton();//类内静态变量的初始化要放在类外面
原创粉丝点击