• 单例模式(singleton)


    1、作用

    在完全使用面向对象模式编程情况下,需要一个唯一对象。这个时候不能定义static的全局变量,就需要使用到单例模式Singleton。(工厂模式中的工厂,可以只用一个)

    2、实现方式

    单例模式实现很简单,只是用一个类来封装一个静态类型的变量,提供一个获取静态成员变量的函数,并且函数中保证静态成员变量只new一次。单例模式返回的是静态对象的指针,用不完全类型只能定义指针变量,在定义instance时,Singleton类还是不完全定义的。

    3、C++代码

    Singleton.h

    class Singleton {
    public:
         static Singleton *Instance();
    private:
    Singleton(); // Singleton不应该在外边实例化,所以把构造函数声明为private的或者protected的
    static Singleton *instance; };

    Singletong.cpp

    #include <iostream>
    #include "Singleton.h"
    
    using namespace std;
    
    Singleton *Singleton::instance = nullptr;
    
    Singleton::Singleton() {
          cout<<"new instance ...."<<this<<endl;
    }
    
    Singleton *Singleton::Instance() {
          if(instance == nullptr)
                 instance = new Singleton();
    
          cout<<"get instance ..."<<instance<<endl;
          return instance;
    }

    test.cpp

    #include "Singleton.h"
    
    int main() {
         Singleton *s1 = Singleton::Instance();
         Singleton *s2 = Singleton::Instance();
         Singleton *s3 = Singleton::Instance();
    }

    输出:只new了一次对象

    new instance ... 0x161ac20
    get instance ... 0x161ac20
    get instance ... 0x161ac20
    get instance ... 0x161ac20
  • 相关阅读:
    2019 icpc西安邀请赛 点分治
    2019ccpc 秦皇岛
    hdu 5354 树上点分治
    cf 632E FFT+快速幂
    hdu 4812 树分治+逆元+手写hashmap
    2019 上海网络赛G 手写哈希map+字符串hash
    2019 上海icpc网络赛 C FFT优化卷积+小范围暴力
    hdu 6198 杜教BM
    洛谷P3804 后缀自动机
    集合总结
  • 原文地址:https://www.cnblogs.com/yuandonghua/p/11805130.html
Copyright © 2020-2023  润新知