在一个应用中,架构上使用Container包装所有的Checker,同时有一个Register来根据不同的Status注册不同的Checker,这时就需要一个全局的Container,使用单例模式可完成此工作。
下面是一个使用static ?实现的单例模式实现:
在 C++ 11 之后,被?static ?修饰的变量可以保证是线程安全的;
template<typename T>
class Singleton
{
public:
static T& GetInstance()
{
static T instance;
return instance;
}
// 移动
Singleton(T&&) = delete;
// 拷贝
Singleton(const T&) = delete;
// 赋值
Singleton& operator= (const T&) = delete;
Singleton& operator= (T&&) = delete;
protected:
Singleton() = default;
virtual ~Singleton() = default;
};
参考链接(代码来自下面链接,但在此基础上做了些修改):C++ 单例模式的模板实现 - 知乎C++ 单例模式的模板实现单例模式是一种创建型的设计模式(creational design patterns),使用单例模式进行设计的类在程序中只拥有一个实例(single instance),这个类称为单例类,它会提供一个全局的访问入口(g…https://zhuanlan.zhihu.com/p/232319083
|