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?