Enum Singleton
Version >= Java SE 5
public enum Singleton {
INSTANCE;
public void execute (String arg) {
// Perform operation here
}
}
列舉有私有建構函式,是最終的並提供適當的序列化機制。它們也非常簡潔,並以執行緒安全的方式初始化。
JVM 提供了一個保證,即列舉值不會多次例項化,這使得列舉單例模式能夠很好地防禦反射攻擊。
列舉模式無法防範的是其他開發人員在原始碼中物理新增更多元素。因此,如果你為單例選擇此實現樣式,則必須非常清楚地記錄不應將新值新增到這些列舉中。
這是實現單例模式的推薦方法,正如 Joshua Bloch 在 Effective Java 中所解釋的那樣 。