首页 > 代码库 > 单例模式

单例模式

一. 懒汉模式-线程不安全

class CSingleton{    private:     static CSingleton* pInstance;    CSingleton()//构造函数私有化,封死外界使用new创建实例的可能    {    }    public:    static CSingleton* getInstance()//实例化本类的唯一全局入口    {        if(NULL == pInstance)        {            pInstance = new CSingleton();        }               return pInstance;    }};

问题1: 为什么单例模式的实例要设置为静态的?
从语义上讲,类的静态成员变量是所有对象共享的,而单例模式就是为了让该类所有实例共享同一个对象。
从语法上讲,常见的单例模式都是通过一个静态方法返回其单例,而静态方法的内部不能直接使用非静态变量。
问题2:为什么getInstance要设置成静态函数?
静态方法可以在实例化之前,就通过类名调用,此函数用于构造单利,会早于单利生成调用。

单例模式