单键模式

#include <mutex>
#include <iostream>
using namespace std;

class Single{
public:
    static Single*  ShareInstance();
    static void ReleaseInstance();

private:
    Single();
    ~Single();
    Single(const Single &other);
    Single& operator=(const Single &other);
    
private:
    static Single *m_pObj;
    static mutex *m_pMutex;
};



#include "Single.h"
Single* Single::m_pObj = NULL;
mutex* Single::m_pMutex = new mutex();
Single* Single::ShareInstance(){
    if (NULL == m_pObj) {
        m_pMutex->lock();
        m_pObj = new Single();
        m_pMutex->unlock();
    }
    return m_pObj;
}

void Single::ReleaseInstance(){
    if (m_pObj) {
        delete m_pObj;
        m_pObj = NULL;
    }
}

Single::Single(){
    
}
Single::~Single(){
    
}

EX:

#include <iostream>
class SingleEx{
public:
    static SingleEx& ShareInstance();
private:
    SingleEx();
    ~SingleEx();
    SingleEx(const SingleEx &other);
    SingleEx& operator =(const SingleEx &other);
 
};

#include "SingleEx.h"


SingleEx& SingleEx::ShareInstance(){
    static SingleEx obj;
    return obj;
}

SingleEx::SingleEx(){
    
}

SingleEx::~SingleEx(){
    
}
原文地址:https://www.cnblogs.com/zhidao-chen/p/3836198.html