第七十二题(设计一个类,我们只能生成该类的一个实例)

来源:互联网 发布:facebook好友推荐算法 编辑:程序博客网 时间:2024/05/16 05:41

72. 题目:设计一个类,我们只能生成该类的一个实例。

分析:设计模式中的单例模式,这里给出单例模式的几种情形下的C++实现。

普通的单例模式:

class CSingleton  {  public:      static CSingleton* getInstance()      {          if (mInstance == NULL)              mInstance = new CSingleton();          return mInstance;      }  private:      CSingleton(){}      static CSingleton* mInstance;  };  

增加删除操作的单例模式:

class CSingleton      {      public:          static CSingleton* getInstance()          {              if (mInstance == NULL)                  mInstance = new CSingleton();              return mInstance;          }      private:          CSingleton(){}          static CSingleton* mInstance;        private:          class Deleter          {          public:              ~Deleter()              {                  delete CSingleton::mInstance;              }          };        private:          static Deleter deleter;      };  
增加锁的单例模式:

class CSingleton      {      public:          static CSingleton* getInstance()          {              Lock();              if (mInstance == NULL)                  mInstance = new CSingleton();              unLock();              return mInstance;          }      private:          CSingleton(){}          static CSingleton* mInstance;        private:          class Deleter          {          public:              ~Deleter()              {                  delete CSingleton::mInstance;              }          };        private:          static Deleter deleter;      };  

饿汉模式:

class SingletonStatic  {  private:      static const SingletonStatic* mInstance;      SingletonStatic(){};  public:      static const SingletonStatic* getInstance()      {          return mInstance;      }  };  const   SingletonStatic*   SingletonStatic::mInstance = new  SingletonStatic();  



0 0
原创粉丝点击