一文读懂:C++中单例模式的实现
单例模式的实现
单例模式是一个比较模板化的设计模式,通常在实际应用中可以直接复用写好的框架。
如下是一种典型的模式:
class Singleton { private: static Singleton* s_instancePtr; public: static Singleton* instance() { // TODO return s_instancePtr; } private: Singleton() = default; ~Singleton() = default; private: Singleton(const Singleton&) = delete; Singleton& operator=(const Singleton&) = delete; }; Singleton* Singleton::s_instancePtr = nullptr;这里为了防止调用者突破单例,需要两层防护:
- 将需要的构造函数设为 private
- 将拷贝构造函数和拷贝赋值显示删除
对于这个全局的访问点,我们需要设置一个 pubilc 的 static 函数,下文也是着重对该函数进行讲解。
单例模式用在哪里?
配置管理:比如系统配置信息,一份就够了,保证所有模块读到的配置一样。
资源池:像数据库连接池、线程池,多了浪费资源,限制数量更高效。
日志记录:所有日志写到同一个地方,避免信息冗余混乱,方便统一管理。
