单例模式

单例模式
单例模式主要解决一个全局使用的类频繁的创建和销毁的问题。单例模式下可以确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。
单例模式有三个要素:
一是某个类只能有一个实例;
二是它必须自行创建这个实例;
三是它必须自行向整个系统提供这个实例。

C++实现单例模式

  1. 饿汉式单例模式:在类加载时就完成了初始化,所以类加载比较慢,获取对象的速度快,以空间换时间,线程安全。
class Singleon
{
private:
		Singleon(){
		}
		static singleon* instance;
public:
		static Singleon* getInstance()
		{
			return instance;
		}
		static Singleon* Destroy()
		{
			delete instance;
			instace = NULL;
		}
};
Singleon* Singleon::instance = new Singleon();
  1. 懒汉式单例模式:在类加载时不初始化,按照需求创建实例,以时间换空间。
class Singleon
{
private:
		Singleon(){
		}
		static singleon* instance;
public:
		static Singleon* getInstance()
		{
			if(NULL == instance)
			{
				instance = new Singleon();
			}
			return instance;
		}
		static Singleon* Destroy()
		{
			delete instance;
			instace = NULL;
		}
};
Singleon* Singleon::instance = NULL;
  1. 多线程下的单例模式
class Singleon
{
private:
		Singleon(){
		}
		static singleon* instance;
public:
		static Singleon* getInstance()
		{
			if(NULL == instance)
			{
				lock();
				if(NULL == instance)
				{
					instance = new Singleon();
				}
				unlock();
			}
			return instance;
		}
		static Singleon* Destroy()
		{
			delete instance;
			instace = NULL;
		}
};
Singleon* Singleon::instance = NULL;

你可能感兴趣的:(C++)