单例模式的代码重复率太高,所以我就用模板来实现,提高了代码复用率
单例模式的实现要点:
1. 构造函数私有
2. 暴露一个函数来获取实例
可以用模板实现保存和获取实例,子类只要继承模板类就可以了
这里有个问题就是子类的构造函数是private的那么父类也不能构造,所以还需要把父类声明为友元类,这里用了宏来实现
#pragma once
template<class T>
class Singleton
{
protected:
Singleton() = default;
virtual ~Singleton() = default;
public:
static T& GetInstance()
{
static T s_instance;
return s_instance;
}
};