前言
在之前的文章,我们已经讲过了单例模式的各种实现,大家有兴趣的可参考以下文章:
单例模式(一)—懒汉模式
单例模式(二)—懒汉模式(线程安全模式)
单例模式(三)—饿汉模式
单例模式(四)—懒汉双锁模式
单例模式(五)—饿汉静态块模式
单例模式(六)—静态内部类模式
单例模式(七)—枚举模式
今天让我们对单例模式的各种实现方式做一个总结, 涉及内容有:
- 单例模式实现的方式种类
- 单例模式各种方式实现的共性
- 各种实现方式对比
一. 单例模式实现的方式种类
我们实现单例模式的方式总体来说有七种,分别是两种饿汉模式,三种懒汉模式,一种静态内部类方式和一种枚举实现方式,具体如下:
- 懒汉模式
- 懒汉同步锁模式
- 懒汉双锁同步+Volatile 模式
- 饿汉模式
- 饿汉静态块模式
- 静态内部类模式
- 枚举模式
二. 单例模式各种方式实现的共性
单例模式各种实现方式有以下共性:
- 都要写
private
无参构造函数 - 都要提供一个获取该类对象的方法
- 都会涉及到内存占用与线程安全的问题
三. 各种实现方式对比
单例模式实现方式 | 延迟加载 | 线程安全 | 性能 | 实现难度 |
---|---|---|---|---|
懒汉模式 | 是 | 否 | 一般 | 一般 |
懒汉同步锁模式 | 是 | 是 | 低 | 一般 |
懒汉双锁同步+Volatile 模式 | 是 | 是 | 一般 | 难 |
饿汉模式 | 否 | 是 | 一般 | 一般 |
饿汉静态块模式 | 否 | 是 | 一般 | 一般 |
静态内部类模式 | 是 | 是 | 一般 | 一般 |
枚举模式 | 否 | 是 | 一般 | 易 |
ok, 今天关于单例模式各种实现方式的对比与总结就介绍到这里了,谢谢大家。
网友评论