单例模式几乎是最常用的设计模式,简单易懂,使用起来效果显著,在此也不对单例模式做剖析,不了解的可以自行查阅资料。 项目中多次使用单例模式后发现每次都是重复的构建单例类,于是做了一个单例模式的模板。
template <typename T>
class Singleton {
Singleton() = default;
~Singleton() = default;
public:
Singleton(T &&) = delete;
Singleton(const T &) = delete;
void operator = (const T &) = delete;
T *operator &() = delete;
static T* instance()
{
static T object;
return &object;
}
};
使用示例:
class Test
{
int id;
public:
void setId(int id)
{
this->id = id;
}
int getId() const
{
return this->id;
}
};
int main()
{
Singleton<Test>::instance()->setId(5);
std::cout << Singleton<Test>::instance()->getId() << std::endl;
}
如果使用的时候觉得调用太长,可以将其 #define 一下,如:
#define SingletonTest Singleton<Test>::instance()
使用时短小很多,减少自己手指的损耗,如下:
int main()
{
SingletonTest->setId(5);
std::cout << SingletonTest->getId() << std::endl;
}
宏定义本身是c/c++程序设计中不推荐的做法,关于宏定义是预处理期展开在此也不做赘述,个中利害还需自己斟酌。
|