单例模式的进化过程

来源:互联网 发布:电动汽车数据 编辑:程序博客网 时间:2024/05/01 06:38

一说到设计模式,大家一定会想到单例模式。当然,单例模式也有很多的版本哦
最大众的版本

class Singleton{public:    static Singleton *pstr;    static Singleton* Get()    {        if(pstr == NULL)        {            pstr = new Singleton();        }        return pstr;    }private:    Singleton();}Singleton *Singleton::pstr = NULL;

当然,这个模式不是线程安全的,那我们就写一个线程安全的单例模式

class Singleton{public:    static Singleton *pstr;    static Singleton* Get()    {        return pstr;    }private:    Singleton();}Singleton *Singleton::pstr = new Singleton();

又有同学会说,这样对象只能在堆上创建啊,并且存在对象过早创建的现象,浪费内存,那好,我们来写一个最终版的单例模式

class Singleton{public:    static Singleton* Get()    {        static Singleton singleton;        return &singleton;    }private:    Singleton();}

充分利用了static关键字具有记忆性的特性。




0 0
原创粉丝点击