设计模式-单例模式(Singleton Pattern)-C++实现(懒汉、饿汉)

本文详细介绍了单例模式的概念、设计思路,并通过C++实现了懒汉模式和饿汉模式的单例,探讨了线程安全问题。饿汉模式在类加载时创建单例,线程安全;懒汉模式在首次使用时创建单例,非线程安全。通过加锁可以实现线程安全的懒汉模式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

单例模式(Singleton Pattern)是一种常用的设计模式,它属于创建者模式。单例模式只允许有一个实例,通过构造函数私有化的方式隐藏对象创建入口,取而代之的是提供公共接口用于获取类的单例。其应用场景广泛,例如创建管理类(只需要一个管理实体),或者应用于对象需要限定唯一性的场景等。注意不要滥用单例模式,否则会导致代码维护困难。

设计思路:

单例模式首先需要一个私有的、静态的单例对象(或者指针);接着需将构造函数声明为私有;最后开放一个公有接口用于获取这个单例对象(由于外部无法获得本类的一个对象,也就无法调用非静态方法,因此需将本接口声明为静态)。

本文介绍单例模式的两种实现方式(其实还有很多种),懒汉模式和饿汉模式,并且在Window环境下实现简单demo。

 

1.饿汉模式

饿汉模式在类定义时就创建了单例,seems hungry。使用时通过公共接口直接获取已创建好的这个单例对象,不存在并发创建问题,因此饿汉模式是线程安全的。

饿汉模式demo:

//Singleton.h
#pragma once
class Singleton 
{
private:
	static Singleton* instance;	//静态单例指针
	Singleton();	//构造函数声明为私有
public:
	static Singleton* getInstance();	//公共接口用于获取单例对象(也可以直接把定义放在这边)
};
//Singleton.cpp
#include <iostream>
#include "
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值