当前位置: 首页> 科技> 名企 > 国内十大新闻_电子电工技术工程网_seo三人行网站_百度入口官网

国内十大新闻_电子电工技术工程网_seo三人行网站_百度入口官网

时间:2025/7/8 21:08:02来源:https://blog.csdn.net/qq_33865609/article/details/124704964 浏览次数:0次
国内十大新闻_电子电工技术工程网_seo三人行网站_百度入口官网

设计模式-单例模式

  • 前言
  • 单例模式
    • 懒汉式
    • 饿汉式

前言

由于作者做的C++开发比较多所以本文实例都以C++语言方式给出。

单例模式

单例顾名思义只有一个实例,如果想要设计一个只有一个实例对象的类,就需要使用到该模式。

设计思路

  1. 只能存在一个实例
  2. 只能自己创建这个实例
  3. 给出一个提供实例的静态方法

懒汉式

懒汉式可以理解为非常懒,只有在有调用获取单例对象的时候才去创建对象。
因为懒汉式是在使用的时候才去进行实例化这就可能在多线程的时候,由于多个线程之间信息不同步导致创造多个实例的风险,可以使用双检锁实现。第一次instance判空的意义是大多数instance都不为空,可以提高性能,不然每次都加锁后判断性能会差一些。

#include <mutex>class Singleton {
private:static Singleton* instance;static std::mutex mtx;// 私有构造函数防止外部实例化Singleton() {}// 防止拷贝和赋值Singleton(const Singleton&) = delete;Singleton& operator=(const Singleton&) = delete;public:static Singleton* getInstance() {if (instance == nullptr) {std::lock_guard<std::mutex> lock(mtx);if (instance == nullptr) {instance = new Singleton();}}return instance;}void someMethod() {// 示例方法}
};

饿汉式

饿汉式可以理解为非常饥饿程序开始运行不管有没有人获取单例都直接创建对象。
下面是我常用的饿汉式定义方法,采用静态变量。静态变量存储在静态存储区只有在进程运行结束后才会释放。我们就可以采用静态变量的特点去创建一个实例,然后每次都返回这个实例,这样就保证了这个实例对象在整个进程中只存在一份。


class Singleton {
private:static Singleton instance;  // 类加载时就初始化Singleton() {}  // 私有构造函数Singleton(const Singleton&) = delete;Singleton& operator=(const Singleton&) = delete;public:static Singleton& getInstance() {return instance;}void someMethod() {// 示例方法}
};
关键字:国内十大新闻_电子电工技术工程网_seo三人行网站_百度入口官网

版权声明:

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

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

责任编辑: