使用列舉enum實現單例模式

2021-08-04 09:04:14 字數 432 閱讀 5033

單例模式的實現:

1, 普通模式:

public class singledemo 

public singledemo getinstance()

return instance;

}}

以上模式為懶漢模式

可以改造為飢餓模式,即class載入即new物件

public class singledemo 

public singledemo getinstance()

}

上述方法可以可以通過反射,突破單例模式。

可以使用 enum方式實現

public enum singledemoenum 

}

列舉實現單例模式

已經有了雙重判斷加鎖的單例模式,為什麼還要用列舉實現單例模式?列舉的單例模式可以避免反射破壞封裝 先來觀察反射實現的單例 public class reflectdemo 列舉實現單例 這是發現通過列舉可以實現單例模式 若乙個類宣告為列舉類就預設這個類繼承了enum,同時繼承了父類的構造方法。若此時...

列舉類實現單例模式

實現單例模式時候,要思考四個問題 是否執行緒安全 多執行緒安全了,效率是否能接受 是否可以延遲載入 是否支援序列化 請看下面一張圖 列舉實現單例模式如下 簡潔優雅 public enum singleton 0 public void setanint int anint public void d...

單例模式之列舉單例

列舉也是餓漢式。列舉單例 問題1 列舉單例是如何限制例項個數的 反編譯後可以看到 就是我們列舉類的乙個靜態成員變數而已,單例項的 問題2 列舉單例在建立時是否有併發問題 沒有,因為它也是靜態成員變數,它的執行緒安全性也是在類載入階段完成的。那個時候不會有執行緒併發問題 問題3 列舉單例能否被反射破壞...