C++设计模式-单件(Singleton)

目录

C++设计模式-单件(Singleton)

一、意图

二、适用性

三、结构

四、参与者

五、代码


C++设计模式-单件(Singleton)

一、意图

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

二、适用性

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

三、结构

四、参与者

  • Singleton

定义一个Instance操作,允许客户访问它的唯一实例。Instance是一个类操作。

可能负责创建它自己的唯一实例。

五、代码

cpp 复制代码
#include<iostream>
using namespace std;

class Singleton {
public:
	static Singleton* GetInstance() {
		if (instance == nullptr) {
			instance = new Singleton;
		}
		return instance;
	}
private:
	Singleton(){}
	static Singleton* instance;
};

Singleton* Singleton::instance = nullptr;

int main() {
	Singleton* s1 = Singleton::GetInstance();
	Singleton* s2 = Singleton::GetInstance();

	cout << "s1 address : " << s1 << endl;
	cout << "s2 address : " << s2 << endl;

	return 0;
}
相关推荐
感哥2 小时前
C++ 多态
c++
沐怡旸9 小时前
【底层机制】std::string 解决的痛点?是什么?怎么实现的?怎么正确用?
c++·面试
幂简集成explinks12 小时前
e签宝签署API更新实战:新增 signType 与 FDA 合规参数配置
后端·设计模式·开源
River41612 小时前
Javer 学 c++(十三):引用篇
c++·后端
感哥15 小时前
C++ std::set
c++
侃侃_天下15 小时前
最终的信号类
开发语言·c++·算法
博笙困了16 小时前
AcWing学习——差分
c++·算法
echoarts16 小时前
Rayon Rust中的数据并行库入门教程
开发语言·其他·算法·rust
Aomnitrix16 小时前
知识管理新范式——cpolar+Wiki.js打造企业级分布式知识库
开发语言·javascript·分布式
大飞pkz16 小时前
【设计模式】C#反射实现抽象工厂模式
设计模式·c#·抽象工厂模式·c#反射·c#反射实现抽象工厂模式