1. 单例模式实现思路
单例模式在数据库连接池、日志管理等各方面应用广泛。其拥有一个私有构造函数,确保用户无法通过new直接实例它,包含一个静态私有成员变量instance与静态共有方法Instance()。
2. 实现
2.1 创建Singleton.h
#pragma once
#include <iostream>
class Singleton
{
public:
static const Singleton* Instance();
static void doSomething();
private:
Singleton(); // 私有构造 避免new
virtual ~Singleton(); // 子类可以有自己的析构
static Singleton* instance; // 静态私有成员变量
};
2.2创建Singleton.cpp
#include "Singleton.h"
Singleton* Singleton::instance = NULL; // 静态成员属性类外赋值
const Singleton* Singleton::Instance() {
if (instance == NULL) {
instance = new Singleton();
}
return instance;
}
void Singleton::doSomething() {
std::cout << "hahahaha" << std::endl;
}
Singleton::Singleton() {
std::cout << "构造函数" << std::endl;
}
Singleton::~Singleton() {
std::cout << "析构函数" << std::endl;
}
3. 使用
多次调用只会new一个实例
Singleton::Instance()->doSomething();
Singleton::Instance()->doSomething();
Singleton::Instance()->doSomething();
输出
构造函数
hahahaha
hahahaha
hahahaha