• 设计模式——单例模式(Singleton)


    • 解决如何创建唯一对象的问题
    • 实现方法:
      • 通过一static变量记录唯一对象实例
      • 提供static接口获取这个实例
      • 禁用其它对象创建接口(构造函数私有化)
    • 示例代码:
       1 #include <iostream>
       2  using namespace std;
       3  
       4  class Singleton 
       5  {
       6  public:
       7      static Singleton& Instance() { return s; }
       8  private:
       9      static Singleton s;//静态数据成员的类型可以是其所属类
      10  private:
      11      Singleton() {}
      12      Singleton(const Singleton&);
      13  };
      14  
      15  //唯一对象
      16  Singleton Singleton::s;
      17  
      18  int main() 
      19  {
      20      Singleton& s = Singleton::Instance();
      21  
      22      return 0;
      23  }
    • 问题:静态变量有个初始化顺序问题,解决办法是将静态变量定义在函数中,仅当调用此函数时才初始化该静态变量
    • 示例代码:
       1 #include <iostream> 
       2  using namespace std; 
       3  
       4  class Singleton 
       5  { 
       6  public: 
       7      //静态变量放入函数中,调用时初始化
       8      static Singleton& Instance() 
       9      { 
      10          static Singleton s; 
      11          return s; 
      12      } 
      13  private:
      14      Singleton() {} 
      15      Singleton(const Singleton&); 
      16  }; 
      17  
      18  int main() 
      19  { 
      20      Singleton& s = Singleton::Instance(); 
      21  
      22      return 0;
      23  }
    • 参考:
      • 《Tinking in C++》
  • 相关阅读:
    4header组件开发
    3组件骨架开发
    2项目目录设计
    1项目相关的一些简介
    21AJax与Comet
    20JSON
    获取特定筛选条件下数据的四分位点
    动态长度字符串的解析拆分问题
    myBase Desktop 7无限免费试用方法
    VBA 将Excel工作簿中所有表格进行一键排版
  • 原文地址:https://www.cnblogs.com/dahai/p/2839738.html
Copyright © 2020-2023  润新知