Mamba spirit

Gra55

愿背井离乡、追寻梦想的你归来仍是少年

设计模式 # 创建型 # 单例模式

最简单的创建型设计模式之一,对外提供全局唯一的对象

gra55

1-Minute Read

0x00 模式概述

单例模式是最简单的设计模式之一,属于创建型,提供了一种创建全局唯一对象的方法。

0x01 场景

在业务代码中,如果需要全局唯一的对象,可以使用单例模式来创建对象。

0x02 解决方案

单例模式根据对象实例化的时机,划分为懒汉式和饿汉式,顾名思义:

  • 饿汉式:在类初始化的时候,就提前实例化一个对象,等到使用的时候直接返回
  • 懒汉式:在第一次准备实例化对象的时候才真正创建一个对象,再此之后的实例化都是直接返回第一次创建的对象

饿汉式的优势是因为它是线程安全的,因为对象在使用之前已经创建了。而懒汉式就存在多线程并发情况下会创建出多个实例对象的问题,所以就需要加锁,加锁会影响性能。

0x03 总结

一般情况下使用饿汉式就可以了,除非明确要求延迟初始化(lazy initialization)。


参考:

📌 设计模式(45种)

📌 Design patterns for humans 中文版

Recent Posts

Categories

About

Ordinary but not mediocre, fighting