使用單元素列舉實現 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 一書,單元素列舉是實現單例的最佳方法。這種方法具有以下優點:

  • 執行緒安全
  • 保證單一例項化
  • 開箱即用的序列化

並且如實現介面部分所示,該單例也可以實現一個或多個介面。