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;
}
相关推荐
Amd7942 小时前
FastAPI依赖注入实践:工厂模式与实例复用的优化策略
单例模式·性能优化·fastapi·工厂模式·依赖注入·多租户系统·实例复用
永恒迷星.by2 小时前
文件操作(c语言)
c语言·c++·算法·文件操作
Qlittleboy2 小时前
windows如何安装wkhtmltoimage 给PHP使用根据HTML生成图片
开发语言·windows·php
水w3 小时前
【Android Studio】解决报错问题Algorithm HmacPBESHA256 not available
android·开发语言·android studio
冷琅辞3 小时前
Elixir语言的云计算
开发语言·后端·golang
Zhichao_974 小时前
【UE5 C++课程系列笔记】32——读Json文件并解析
c++·ue5
Mryan20054 小时前
解决GraalVM Native Maven Plugin错误:JAVA_HOME未指向GraalVM Distribution
java·开发语言·spring boot·maven
Naomi5214 小时前
自定义汇编语言(Custom Assembly Language) 和 Unix & Git
服务器·开发语言·git·unix
烂蜻蜓4 小时前
C 语言命令行参数:让程序交互更灵活
c语言·开发语言·交互
zm-v-159304339864 小时前
解锁 DeepSeek 与 Matlab:攻克科研难题的技术利刃
开发语言·matlab·信息可视化