创建型模式-单例模式

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

适用场景:

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

2、用于存储全局变量

实现过程:

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

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

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

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

cpp 复制代码
#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();

}
cpp 复制代码
#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;
};
cpp 复制代码
#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的解释。

相关推荐
西北大程序猿8 小时前
单例模式与锁(死锁)
linux·开发语言·c++·单例模式
找不到、了2 天前
实现单例模式的常见方式
java·开发语言·单例模式
不愧是你呀5 天前
C++中单例模式详解
网络·c++·windows·单例模式
变身缎带5 天前
Unity中的MonoSingleton<T>与Singleton<T>
unity·单例模式·c#·游戏引擎
小吴同学·7 天前
OPC Client第6讲(wxwidgets):Logger.h日志记录文件(单例模式);登录后的主界面
开发语言·c++·单例模式·wxwidgets
勤奋的知更鸟8 天前
Java 单例模式详解
java·开发语言·单例模式
ailinghao8 天前
单例模式的类和静态方法的类的区别和使用场景
flutter·单例模式
XiaoLeisj8 天前
【JUC】深入解析 JUC 并发编程:单例模式、懒汉模式、饿汉模式、及懒汉模式线程安全问题解析和使用 volatile 解决内存可见性问题与指令重排序问题
javascript·安全·单例模式
charlie1145141919 天前
从C++编程入手设计模式1——单例模式
c++·单例模式·设计模式·架构·线程安全
linux-hzh9 天前
设计模式之单例模式
单例模式·设计模式