單例模式以及列舉

2021-09-14 00:27:04 字數 1639 閱讀 6370

相同點:同樣是類中有固定的物件個數

不同點:單例模式只有乙個物件,列舉是有限個物件,但物件只有乙個時,也可以叫做單例模式

單例模式有七種實現方式,但本質上是讓讓類只能建立乙個物件,為了保證這個,只能在類內部建立物件,而在類外部外部無法建立,所以構造器是空的

給出兩種實現方式:

//餓漢式:提前建立好物件

class

single

private

static single instance=

newsingle()

;//構造器必須私有

public

static single getinstance()

}//懶漢式:呼叫時才建立

class

single2

public

static single2 getinstance()

return instance;

}}

自定義列舉

enum seasons */

}

列舉類如何實現介面 :①讓類實現此介面,類的物件共享同一套介面的抽象方法的實現。

①讓類的每乙個物件都去實現介面的抽象方法,進而通過類的物件呼叫被重寫的抽象方法時,執行的效果不同

inte***ce

info

enum seasons implements

info;}

,//建立四個例項,注意是逗號,

summer

("夏天"

,"生如夏花")}

,autmn

("秋天"

,"秋高氣爽")}

,winter

("冬天"

,"冬日可愛")}

;private

final string seasonname;

private

final string seasondesc;

private

seasons

(string seasonname, string seasondesc)

public string getseasonname()

public string getseasondesc()

@override

public

void

show()

@override

public string tostring()

}

呼叫方式

public

static

void

main

(string[

] args)

//valueof(string):要求是形參的名字

system.out.

println

(season.

valueof

("spring"))

;}

輸出

單例模式之列舉單例

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

單例設計模式 列舉

設計模式 是一套被反覆使用 多數人知曉的 經過分類的 設計經驗的總結 套路 模式 前人已經經過大量測試得出的設計模式 使用設計模式的好處 提高 的可重用性與可靠性。單例設計模式 單個例項 單個物件 意味著只能建立乙個物件,就好電腦的任務管理器,只能有乙個視窗。單例設計模式 私有構造方法 對外提供乙個...

列舉實現單例模式

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