zoukankan      html  css  js  c++  java
  • Singleton 单例模式

    常见设计模式之单例模式

    //: C10:CuriousSingleton.cpp
    // Separates a class from its Singleton-ness (almost).
    #include <iostream>
    using namespace std;
    
    template<class T> class Singleton {
      Singleton(const Singleton&);
      Singleton& operator=(const Singleton&);
    protected:
      Singleton() {}
      virtual ~Singleton() {}
    public:
      static T& instance() {
        static T theInstance;
        return theInstance;
      }
    };
    
    // A sample class to be made into a Singleton
    class MyClass : public Singleton<MyClass> {
      int x;
    protected:
      friend class Singleton<MyClass>;
      MyClass() { x = 0; }
    public:
      void setValue(int n) { x = n; }
      int getValue() const { return x; }
    };
    
    int main() {
      MyClass& m = MyClass::instance();
      cout << m.getValue() << endl;
      m.setValue(1);
      cout << m.getValue() << endl;
    
      return 0;
    } ///:~
    


    步骤:

    MyClass is made a Singleton by:
    1.  Making its constructor private or protected. 构造函数受保护
    2.  Making Singleton<MyClass> a friend. 授权访问受保护的构造
    3.  Deriving MyClass from Singleton<MyClass>. 继承


    内容源自:《TICPP-2nd-ed-Vol-two》

  • 相关阅读:
    CentOS7.4部署Python3+Django+uWSGI+Nginx
    测试:ATM
    JDBC_增删改
    HTTP请求状态码
    Servlet2
    Java日期时间3
    Servlet1
    安装Tomcat
    Java日期时间2
    广度优先遍历
  • 原文地址:https://www.cnblogs.com/xkxjy/p/3672248.html
Copyright © 2011-2022 走看看