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()) {
  if (!A::Instance().Init()) {
    return false;
  }
}
posted @   半夜打老虎  阅读(95)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示