📙
Design Pattern
  • Introduction
  • 0. About Design Pattern
  • 1. Singleton
  • 1.1 Eager Singleton (a.k.a Pessimistic Lock Singleton)
  • 1.2 Lazy Singleton (a.k.a Optimistic Lock Singleton)
  • 1.3 理解Singleton
  • 1.4 Cache Singleton
  • 1.5 Extend Singleton
  • 1.6 Double Check and Lock Singleton
  • 1.7 Lazy Initialization Holder Class
  • 1.8 Enum Singleton
  • 1.9 Conclusion
  • 2. Factory
  • 2.1 Simple Factory
  • 2.2 Factory
  • 2.3 Abstract Factory
  • 2.4 Conclusion
Powered by GitBook
On this page

Was this helpful?

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();
        }
    }

}
Previous1.7 Lazy Initialization Holder ClassNext1.9 Conclusion

Last updated 5 years ago

Was this helpful?

原始碼

點我