使用单元素枚举实现 Singleton 模式
枚举常量在第一次引用枚举时实例化。因此,这允许使用单元素枚举实现 Singleton 软件设计模式。
public enum Attendant {
INSTANCE;
private Attendant() {
// perform some initialization routine
}
public void sayHello() {
System.out.println("Hello!");
}
}
public class Main {
public static void main(String... args) {
Attendant.INSTANCE.sayHello();// instantiated at this point
}
}
根据 Joshua Bloch 的 Effective Java
一书,单元素枚举是实现单例的最佳方法。这种方法具有以下优点:
- 线程安全
- 保证单一实例化
- 开箱即用的序列化
并且如实现接口部分所示,该单例也可以实现一个或多个接口。