欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 艺术 > 创建型模式-单例模式

创建型模式-单例模式

2025/2/23 14:43:34 来源:https://blog.csdn.net/qq_43812868/article/details/144975294  浏览:    关键词:创建型模式-单例模式

单例模式是一种创建型的设计模式,主要用于在当前项目中需要实例化一个对象的情况。

适用场景:

1、如果程序中对于某一个类型对于整个项目只有一个可用实例。

2、用于存储全局变量

实现过程:

1、创建一个需要实例化的类

2、将创建的类的构造函数设置为私有类型

3、在这个类中定义一个静态成员函数,在这个函数new一个类对象并返回

​ 通过以上三步单例模式基本上就实现了,但是在第三步中如果单纯使用new来创建类对象,这里需要注意线程安全,这里最安全的做法就是使用一个静态成员函数,返回静态成员函数的地址,这样能保证线程安全。

#include <iostream>
#include "DanLiMoShi.h"
int main()
{std::cout << "欢迎东哥来到设计模式的世界!\n";DanLiMoShi* dMode = DanLiMoShi::interface();dMode->setName("东哥");dMode->setAge(27);DanLiMoShi* dMode1 = DanLiMoShi::interface();cout << "姓名:" << dMode1->getName() << "   年龄:" << dMode->getAge();}
#pragma once
#include <string>using namespace std;
class DanLiMoShi
{
public:static DanLiMoShi * interface();void setName(string name);string getName();void setAge(int age);int getAge();
private:DanLiMoShi();~DanLiMoShi();static DanLiMoShi m_dMode;static DanLiMoShi* m_dMode1;string m_name;int m_age;
};
#include "DanLiMoShi.h"DanLiMoShi DanLiMoShi::m_dMode;
DanLiMoShi* DanLiMoShi::m_dMode1 = nullptr;DanLiMoShi* DanLiMoShi::interface() {//方式1//return &m_dMode;//方式2  懒汉式单例模式if (m_dMode1 == nullptr) {m_dMode1 = new DanLiMoShi();}return m_dMode1;
}void DanLiMoShi::setName(string name){m_name = name;}string DanLiMoShi::getName(){return m_name;}void DanLiMoShi::setAge(int age){m_age = age;}int DanLiMoShi::getAge(){return m_age;}DanLiMoShi::DanLiMoShi(){}DanLiMoShi::~DanLiMoShi(){}

那么以上两种方式那种好,这里当然是第一种好,具体可以看C++对static的解释。
在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词