C++单例设计模式

单例模式确保一个类只有一个实例,并提供全局访问点。常见应用包括缓存、日志、配置和线程池。它有节省内存、提高访问速度等优点,但也可能导致对象状态错误。C++实现单例通常通过使构造函数等私有,然后提供公共静态方法获取实例。单例模式分为饿汉模式(提前创建实例)和懒汉模式(按需创建实例)。
摘要由CSDN通过智能技术生成

什么是单例模式

一个类只能创建一个对象,该模式可以保证系统中该类只有一个实例,并提供一个访问它的全局访问点,使得系统中只有唯一的一个对象实例。该实例被所有程序模块共享。

单例模式的应用

缓存,日志,工具类,配置,线程池

  1. 资源共享的情况下,避免由于资源操作时导致的性能或损耗等。如上述中的日志文件,应用配置。
  2. 控制资源的情况下,方便资源之间的互相通信。如线程池等。

单例模式的优缺点

优点:

  1. 避免对共享资源的多重占用。
  2. 由于在系统内存中只存在一个对象,因此可以节省内存,加快对象访问速度
  3. 提供了对唯一实例的受控访问。

缺点

不适用于变化的对象。如果同一类型的对象总是要在不同的场景发生变化,单例就会引起数据的错误,不能保存彼此的状态。

单例模式的实现

C++实现单例模式的一般方法是将构造函数,拷贝构造函数以及赋值运算符函数声明成private,从而禁止他人创建实例。如果上面三者不为私有,那么他人就可以调用上面的三个函数来创建实例,就没法实现单例模式。但是我们总归是要创建一个类的,我们可以提供一个public的静态方法来帮助我们获得这个类唯一的一个实例化对象。

单例模式一般有两种实现模式:懒汉模式和饿汉模式

饿汉模式:定义的是静态成员对象变量,程序启动就创建对象实例,
懒汉模式:定义的是静态成员对象指针变量,要用对象才创建该对象实例。

懒汉模式

像一个懒汉一样,需要创建实例的时候程序再去创建,不需要创建实例的时候程序就“懒得”去创建。这是一种时间换空间的做法

#include <iostream>
using namespace std;
class Singleton  
{
     
private:  
    Singleton(){
    cout << "构造函数" << endl; } 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值