设计模式 # 创建型 # 单例模式
最简单的创建型设计模式之一,对外提供全局唯一的对象
0x00 模式概述
单例模式是最简单的设计模式之一,属于创建型,提供了一种创建全局唯一对象的方法。
0x01 场景
在业务代码中,如果需要全局唯一的对象,可以使用单例模式来创建对象。
0x02 解决方案
单例模式根据对象实例化的时机,划分为懒汉式和饿汉式,顾名思义:
- 饿汉式:在类初始化的时候,就提前实例化一个对象,等到使用的时候直接返回
- 懒汉式:在第一次准备实例化对象的时候才真正创建一个对象,再此之后的实例化都是直接返回第一次创建的对象
饿汉式的优势是因为它是线程安全的,因为对象在使用之前已经创建了。而懒汉式就存在多线程并发情况下会创建出多个实例对象的问题,所以就需要加锁,加锁会影响性能。
0x03 总结
一般情况下使用饿汉式就可以了,除非明确要求延迟初始化(lazy initialization)。
参考: