设计模式 之 单例模式
在某些特定的情况下,例如 线程池,内存池的管理类,要求只能创建一个实例的时候就可以用到单例模式。我们可以通过将构造函数私有化的方法来实现单例模式。本文着重于多线程下的单例模式。
1.单例模式实现
通过将构造函数私有化,提供静态函数并返回静态成员对象的方法来实现单例模式。注意将拷贝构造也私有化,不然就可以通过拷贝构造创建实例了。
#include<stdio.h>
#include<mutex>
using namespace std;
mutex m;
class Singleton
{
private :
Singleton() {
}; //私有默认构造
Singleton(const Singleton&) {
}; //私有化拷贝构造
static Singleton* m_instance; //静态成员对象
public:
static Singleton& GetInstance() //返实例的静态函数
{
if (Singleton::m_instance == nullptr)
{
m.lock();
if (Singleton::m_instance