当前位置: 首页> 教育> 大学 > 宁波seo软件免费课程_标智客logo设计免费生成_搜索量用什么工具查询_seo同行网站

宁波seo软件免费课程_标智客logo设计免费生成_搜索量用什么工具查询_seo同行网站

时间:2025/7/19 9:31:24来源:https://blog.csdn.net/qq_45297613/article/details/144942581 浏览次数:0次
宁波seo软件免费课程_标智客logo设计免费生成_搜索量用什么工具查询_seo同行网站

C++二十三种设计模式之单例模式

  • 一、组成
  • 二、特点
  • 三、目的
  • 四、缺点
  • 五、示例代码

一、组成

单例类:主要包含私有静态实例变量、公共静态方法、线程安全机制(可选)、序列化控制‌(可选,将对象的状态保存到存储介质中,如网络或文件)、反序列化(可选,即从存储介质中重新恢复对象的状态)。

二、特点

1、在一个进程下只实例出一个对象。
2、构造函数私有化,防止外部实例化。
3、使用静态实例变量和公共静态方法,来提供全局访问点。从而保证只有一个实例。
4、实例化对象的时机分两种:饿汉(发出了该类的需求就实例化对象)和懒汉(用到该对像才实例化对象)。

三、目的

确保一个类只有一个实例。

四、缺点

1、违反软件设计中单一职责原则,创建实例和业务逻辑在一个类中。
2、不适用于多线程环境,如果没有对创建实例和访问实例加锁会导致线程安全问题出现。

五、示例代码

#include<iostream>
#include <vector>
#include <string>
#include <mutex>using namespace std;class Singleton {Singleton() {}~Singleton() {}Singleton(const Singleton&) = delete;Singleton& operator=(const Singleton&) = delete;//声明static Singleton* data;//私有静态实例变量static mutex mtx;
public:static Singleton* GetInstance() {//公共静态方法unique_lock<mutex> lock(mtx);if (data == nullptr) {data = new Singleton();lock.unlock();}return data;}
};//初始化类静态变量
Singleton* Singleton::data = nullptr;
mutex Singleton::mtx;int main() {Singleton* temp = Singleton::GetInstance();
}
关键字:宁波seo软件免费课程_标智客logo设计免费生成_搜索量用什么工具查询_seo同行网站

版权声明:

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

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

责任编辑: