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;
}
相关推荐
小松学前端几秒前
第六章 7.0 LinkList
java·开发语言·网络
可峰科技10 分钟前
斗破QT编程入门系列之二:认识Qt:编写一个HelloWorld程序(四星斗师)
开发语言·qt
咖啡里的茶i14 分钟前
Vehicle友元Date多态Sedan和Truck
c++
全栈开发圈14 分钟前
新书速览|Java网络爬虫精解与实践
java·开发语言·爬虫
WaaTong16 分钟前
《重学Java设计模式》之 单例模式
java·单例模式·设计模式
面试鸭18 分钟前
离谱!买个人信息买到网安公司头上???
java·开发语言·职场和发展
小白学大数据19 分钟前
JavaScript重定向对网络爬虫的影响及处理
开发语言·javascript·数据库·爬虫
海绵波波10720 分钟前
Webserver(4.9)本地套接字的通信
c++
Python大数据分析@22 分钟前
python操作CSV和excel,如何来做?
开发语言·python·excel
@小博的博客26 分钟前
C++初阶学习第十弹——深入讲解vector的迭代器失效
数据结构·c++·学习