• 设计模式——单例模式(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++》
  • 相关阅读:
    Python生成器
    Python迭代器
    模块
    列表推倒式
    内置函数 lambda表达式
    函数
    global、nonlocal、迭代器
    练习
    编码数组字典
    字典
  • 原文地址:https://www.cnblogs.com/dahai/p/2839738.html
Copyright © 2020-2023  润新知