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;
}
相关推荐
寻寻觅觅☆9 分钟前
东华OJ-基础题-104-A == B ?(C++)
开发语言·c++
lightqjx20 分钟前
【C++】unordered系列的封装
开发语言·c++·stl·unordered系列
zh_xuan35 分钟前
kotlin lazy委托异常时执行流程
开发语言·kotlin
阿猿收手吧!1 小时前
【C++】string_view:高效字符串处理指南
开发语言·c++
玄同7651 小时前
我的 Trae Skill 实践|使用 UV 工具一键搭建 Python 项目开发环境
开发语言·人工智能·python·langchain·uv·trae·vibe coding
Word码1 小时前
[C++语法] 继承 (用法详解)
java·jvm·c++
Yorlen_Zhang2 小时前
Python Tkinter Text 控件完全指南:从基础编辑器到富文本应用
开发语言·python·c#
lxl13072 小时前
C++算法(1)双指针
开发语言·c++
淀粉肠kk2 小时前
C++11列表初始化:{}的革命性进化
c++
不绝1912 小时前
C#进阶:预处理指令/反射,Gettype,Typeof/关键类
开发语言·c#