列舉類實現單例模式

2022-01-19 08:45:37 字數 752 閱讀 8980

實現單例模式時候,要思考四個問題:

是否執行緒安全

多執行緒安全了,效率是否能接受

是否可以延遲載入

是否支援序列化

請看下面一張圖:

列舉實現單例模式如下:簡潔優雅

public enum singleton 0 

public void setanint( int anint )

public void dosomethings( )

}

惡漢式單例模式如下:

public class singleton 1

public static singleton getinstance()

}

飽漢式單例模式

public class singleton2 

public static synchronized singleton2 getinstance()

雙重鎖模式(dcl):

public class singleton3 

public static singleton3 getinstance()

}} return singleton;

}

推薦部落格

列舉實現單例模式

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

單例模式之列舉單例

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

使用列舉enum實現單例模式

單例模式的實現 1,普通模式 public class singledemo public singledemo getinstance return instance 以上模式為懶漢模式 可以改造為飢餓模式,即class載入即new物件 public class singledemo public...