设计模式(一):单例模式

目录

引言

关于设计模式还是非常的重要的,有些面试还是会问到的,因为要区分差异,所以有可能问到了回答不上来可能这份工作就与你无缘了,虽然设计模式总共有23种,但其实常用的也就那几个,所以把常用的掌握了,然后其余的熟悉即可。

一、简介

单例模式特点:

  • 唯一性:在整个程序的声明周期中,该类只存在一个实例
  • 全局性访问:提供了统一的接口,供各个模块或者代码部分访问

二、使用场景

作用:

  • 资源共享和管理:可以看作只存在一份的全局对象,在多线程中可以通过其中的成员进行使用
  • 状态一致性维护:由于只有一个实例,更改状态后的信息也是实时的
  • 节省内存和性能优化

场景:数据库连接池、消息队列服务类等

三、写法

1.饿汉模式

饿汉模式:无论用不用这个单例类,这个单例对象就已经被创建出来,直接拿来用就行。

cpp 复制代码
class Object
{
public:
	Object(const Object&) = delete;
    Object& operator=(const Object&) = delete;
    static Object* getInstance();
    
private:
	Object() = default;
    
private:
    static Object m_object;  
    // static Object* m_object;
};

Object Object::m_object;  // 类内定义,类外初始化
// Object* Object::m_object = new Object;

Object* Object::getInstance()
{
    return &m_object;
    // return m_object
}

2.懒汉模式

懒汉模式:使用单例对象的时候才创建出来,多线程会出现线程安全问题,最简单的处理方式是,返回一个静态的局部对象。

cpp 复制代码
class Object
{
public:
	Object(const Object&) = delete;
    Object& operator=(const Object&) = delete;
    static Object* getInstance();
    
private:
	Object() = default;
    
private:
};

Object* Object::getInstance()
{
    static Object obj;
    return &obj;
}
相关推荐
NeilYuen5 小时前
【C++】STL源码仿写(二):vector
开发语言·c++
郝学胜_神的一滴6 小时前
游戏引擎原理与实践 04:拆解引擎基础系统与内存管理
c++·游戏
All for pursuit.6 小时前
【设计-1】208.实现Trie (前缀树)
数据结构·c++·算法·leetcode
weixin_307779136 小时前
C++代码实现MATLAB中的crossval函数功能
开发语言·c++·算法·matlab
青少儿编程课堂7 小时前
背包问题(0/1 背包与完全背包)解题精讲——动态规划入门
c++·python·算法·bfs·信息学竞赛
倒头就睡的小比特7 小时前
C++多态
c++
小雪崩7 小时前
嵌入式学习 day61-62:IMX6ULL驱动——系统移植
学习
一隅论数智8 小时前
OWL(Web Ontology Language)介绍与使用举例(二)
大数据·经验分享·笔记·学习·自然语言处理·学习方法·政务
我命由我123458 小时前
Photoshop - Photoshop 使用内容识别填充移除对象
学习·职场和发展·产品运营·求职招聘·职场发展·学习方法·photoshop
梓雨枔9 小时前
JavaScript+快速学习,简单好用~
javascript·学习