天天看点

设计模式(一)C++ 单例模式

这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。

注意:

1、单例类只能有一个实例。

2、单例类必须自己创建自己的唯一实例。

3、单例类必须给所有其他对象提供这一实例。

介绍

意图:保证一个类仅有一个实例,并提供一个访问它的全局访问点。

主要解决:一个全局使用的类频繁地创建与销毁。

Singelton* Singelton::GetInstance()
{
  if(NULL == m_pInstance)
  {
    m_mutex.lock();
    if (NULL == m_pInstance)
    {
      m_pInstance = new Singelton();
    }
    m_mutex.unlock();
  }
  return m_pInstance;
}      
#ifndef D_SINGLETON_h
#define D_SINGLETON_h
#include <mutex>
class Singelton
{
public:
  static Singelton* GetInstance();

  ~Singelton();

private:
  Singelton();

public:
  static std::mutex *m_pMutex;
private:
  static Singelton* m_pInstance;
};

#endif // 
#include "Singleton.h"
#include <stdio.h>

std::mutex*Singelton::m_pMutex = new std::mutex;

Singelton* Singelton::m_pInstance = NULL;

Singelton* Singelton::GetInstance()
{
  if (NULL == m_pInstance)
  {
    m_pMutex->lock();
    if (NULL == m_pInstance)
    {
      m_pInstance = new Singelton();
    }
    m_pMutex->unlock();
  }
  return m_pInstance;
}

Singelton::~Singelton()
{

}

Singelton::Singelton()
{

}

`