欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Singleton 单例模式的C++实现

程序员文章站 2022-07-14 09:03:50
...

Singleton 单例模式

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

2、适用性:

  1. 当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时
  2. 当这个唯一实例应该是通过子类化可扩展的,并且客户应该无须更改代码就能使用这个扩展的实例时。

以下是单例模式的代码实现:

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
using namespace std;

class Singleton {
public:
	static Singleton* Instance();
	void play() {
		cout << "test Singleton Instance, cnt = " << m_cnt++ << endl;
	}
protected:
	Singleton() :m_cnt(0) {};
private:
	int m_cnt;
	static Singleton* _instance;
};

Singleton* Singleton::_instance = nullptr;

Singleton* Singleton::Instance() {
	if (_instance == nullptr) {
		_instance = new Singleton;
	}
	return _instance;
}

int main() {
	Singleton* s1 = Singleton::Instance();
	s1->play();
	Singleton* s2 = Singleton::Instance();
	s2->play(); 
	Singleton* s3 = s2->Instance();
	s3->play(); // s3 / s2 / s1 是同一个对象实例
    return 0;
}

代码输出:

test Singleton Instance, cnt = 0
test Singleton Instance, cnt = 1
test Singleton Instance, cnt = 2

谢谢阅读