Head First 设计模式 —— 05. 单例模式 (2)

1.4及更早版本会失效,1.5及以后版本适用 P182

静态内部类 public class Singleton { private static class SingletonHolder { private final static Singleton INSTANCE = new Singleton(); } private Singleton() {} public static Singleton getInstance() { return SingletonHolder.INSTANCE; } }

特点

线程安全

使用时再实例化

依赖 JVM 类加载机制:开始只有 Singleton 被加载了,只有在主动使用 SingletonHolder 时(即调用 getInstance() 时),才会加载 SingletonHolder 类,从而实例化 INSTANCE

枚举 public enum Singleton { INSTANCE }

特点

线程安全

克隆、反射和反序列化均不会破坏单例(上述六种方式都会被破坏)

代码简单

1.5及以后版本才有枚举

初始化就会实例化(反编译后可以发现写法类似饿汉式(变种)

本文首发于公众号:满赋诸机(点击查看原文) 开源在 GitHub :reading-notes/head-first-design-patterns

Head First 设计模式 —— 05. 单例模式

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zygpzx.html