C++单件

最近接触到C++设计模式中的单件模式,这里记录一下使用过程。正如“singleton”这个名字,意思是在整个程序中只定义一个类,这意味着它不能有多个类。它允许其他类访问自己,因为它提供了全局访问点。因此,我们可以得出结论,在 C++ 中,当您拥有所有用户的单一类型信息时,将使用单例类。更多问题可以参考cpp-singleton

单件实现
实现一个模板类,其他类如果想要作为单件,直接继承即可。

点击展开singleton.cpp
template<typename T>
class Singleton {
public:
static T& Instance();

Singleton(const Singleton&) = delete;
Singleton& operator= (const Singleton) = delete;

protected:
struct Token {};
Singleton() {}
};

template<typename T>
T& Singleton<T>::Instance()
{
static T instance{ Token() };
return instance;
}

template<typename T>
class SingletonAllowOtherInstance {
public:
static T& Instance();
protected:
SingletonAllowOtherInstance() {}

};

template<typename T>
T& SingletonAllowOtherInstance<T>::Instance()
{
static T instance;
return instance;
}

  • 其他类使用单件
    类定义的时候直接继承单件类,里面可以实现初始化和销毁函数,便于管理。

实现

class A: public Singleton <A>
{
...
}

调用

普通类

A clsA;
}

单件类

if (!A::Instance().IsValid()) {
  return false;
}
原文地址:https://www.cnblogs.com/xiaxuexiaoab/p/15633087.html