使用單元素列舉實現 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
一書,單元素列舉是實現單例的最佳方法。這種方法具有以下優點:
- 執行緒安全
- 保證單一例項化
- 開箱即用的序列化
並且如實現介面部分所示,該單例也可以實現一個或多個介面。