扫码阅读
手机扫码阅读

【干货】三分钟搞懂单例的七种写法(第八点你肯定没有听说过)

161 2024-09-03

我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。

查看原文:【干货】三分钟搞懂单例的七种写法(第八点你肯定没有听说过)
文章来源:
IT学习日记
扫码关注公众号
Singleton Pattern Summary

前言

单例模式是一种设计模式,用于确保一个类只有一个实例,并提供一个全局访问点。它在面试中经常被问到,并有七种实现方式。

(一):饿汉式

该模式在类加载时创建实例,是线程安全的,但可能导致内存浪费。

(二):懒汉式

实例在首次使用时创建,节省内存,但在多线程环境下可能导致创建多个实例。

(三):懒汉式 + 同步锁

与懒汉式相似,但通过同步锁确保了实例的唯一性,牺牲了一些效率。

(四):双重锁检测(Double Check)方式

使用双重检查来创建实例,能节省内存,但可能因为指令重排序导致异常。

(五):双重锁检测(Double Check Locking)方式

与第四种方式类似,但通过使用volatile关键字防止指令重排序,提升效率。

(六):内部类方式

使用内部类来创建实例,既节省内存又高效,并且不需要同步锁。

(七):枚举方式

通过枚举实现单例,简单且线程安全,不会有反序列化问题。

(八):延伸知识

反序列化可能会违反单例模式的原则,但可以通过readResolve方法解决。

(九):总结

单例模式是一种常见的设计模式,有多种实现方式,每种方式都有其特点和适用场景。

想要了解更多内容?

查看原文:【干货】三分钟搞懂单例的七种写法(第八点你肯定没有听说过)
文章来源:
IT学习日记
扫码关注公众号