模式特点
单例模式确保一个类只有一个实例,并提供一个全局访问点。其核心思想是:
- 构造函数私有化,防止外部直接创建对象
- 类内部保存唯一实例
- 提供静态方法获取实例
类图
应用场景
- 全局配置管理器:应用程序只需要一份配置
- 日志系统:统一的日志写入器
- 数据库连接池:避免重复创建连接
- Qt 中的 QSettings、QCoreApplication::instance()
- 线程池管理器
示例代码(C++)
// 饿汉式 - 线程安全 class Logger { private: static Logger* m_instance; Logger() {} public: static Logger* getInstance() { return m_instance; } void log(const std::string& msg) { std::cout << "[LOG] " << msg << std::endl; } }; Logger* Logger::m_instance = new Logger(); // 懒汉式 - 线程安全 (C++11 Magic Statics) class ConfigManager { public: static ConfigManager& getInstance() { static ConfigManager instance; return instance; } private: ConfigManager() = default; ConfigManager(const ConfigManager&) = delete; ConfigManager& operator=(const ConfigManager&) = delete; };