单例模式(SINGLETON)

单例模式保证一个类的实例只有一个。如何保证一个类只有一个实例,不同的语言语法特性不同,需要结合语言的语法特点来实现。在 C++中的实现方式如下:

#include <iostream>
using namespace std;


class Singleton
{
private:
	Singleton() {}
	Singleton(const Singleton& singleton) {}
public:
	static Singleton* get_instance()
	{
		return p_instance;
	}
private:
	static Singleton* p_instance;
};

Singleton *Singleton::p_instance = new Singleton;



int main()
{
	Singleton* singleton = Singleton::get_instance();
	cout << singleton 

	return 0;
}

上面类通过:

  1. 普通构造、拷贝构造私有,从而禁止对象被创建;
  2. 提供静态成员变量、静态成员函数来访问唯一对象;
  3. 类内的静态成员要在类外初始化。

如果单例类需要被继承的话,将普通构造、拷贝构造函数的访问权限修改为 protected 即可。另外,上面代码仅仅是为了保证不会被实例化出更多的对象,我们在实际使用时,仍然需要在类内增加其他的业务代码。

未经允许不得转载:一亩三分地 » 单例模式(SINGLETON)