使用枚舉實現單例(Java)
在軟體開發領域,遇到我們需要的場景並不罕見確保一個類在記憶體中只有一個實例。 Singleton 是一種設計模式,可以滿足這項要求。
考慮以下使用枚舉的 Singleton 的 Java 實作:
public enum MySingleton { INSTANCE; }
從表面上看,人們可能想知道這實際上是如何運作的。畢竟,物件必須實例化才能存在。細分如下:
隱式建構子:
實際上,枚舉宣告隱式呼叫空建構子。然而,僅從程式碼來看這一點並不總是很清楚。
明確建構子:
為了讓事情更明確,我們可以為枚舉加上一個私有建構子:
public enum MySingleton { INSTANCE; private MySingleton() { System.out.println("Here"); } }
枚舉常數和構造:
枚舉字段本質上是編譯時的常數,但它們也是其枚舉類型的實例。第一次引用枚舉類型時,將建構這些實例。
主方法示範:
如果我們在單獨的類別中建立主方法:
public static void main(String[] args) { System.out.println(MySingleton.INSTANCE); }
我們可以觀察以下輸出:
Here INSTANCE
在此範例中,實例「INSTANCE」是在main 方法中第一次引用枚舉時構造的。
以上是Java枚舉如何實現單例設計模式?的詳細內容。更多資訊請關注PHP中文網其他相關文章!