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;
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端