欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

单例模式

程序员文章站 2022-04-01 10:16:19
...

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

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();//类内静态变量的初始化要放在类外面