1.8 Enum Singleton
根據"Effecttive Java"中的說法: 單元素的enum已經成為實作singleton的最佳方法了, 為了理解這點, 先來複習一下相關的enum知識:
Java的enum類型實質上是功能齊全的類別, 因此可以有自己的屬性與方法
Java enum的基本思想: 通過公有的靜態final域為每個enum常數導出實例的類別
從某些角度講, enum是單例的泛型化, 本質上是單元素的enum
用enum來實作singleton很簡單, 只需要編寫一個包含單個元素的enum class即可
直接上code:
package idv.design.pattern.singleton.enumtype;
/**
 * @author Carl Lu
 */
public enum Singleton {
    /*
     * In "Effective Java", the author said that
     * "a single-element enum type is the best way to implement a singleton."
     * 
     * The following line is also like:
     * "public final static Singleton uniqueInstance = new Singleton();"
     */
    uniqueInstance;
    public void singletonOperation() {
        System.out.println("Singleton operation with instance: " + Singleton.uniqueInstance.hashCode());
    }
}自己測看看:
package idv.design.pattern.singleton.enumtype;
/**
 * @author Carl Lu
 */
public class Client {
    public static void main(String[] args) {
        for (int i = 0; i < 5; i++) {
            Singleton.uniqueInstance.singletonOperation();
        }
    }
}原始碼點我
Last updated
Was this helpful?