java基礎 單例模式

2021-08-28 05:47:30 字數 1235 閱讀 3518

單例模式( singleton模式),乙個類有且僅有乙個例項,並且自行例項化向整個系統提供(公開)。

具體實現的角度來說:

構造方法私有化

靜態屬性指向例項

public staticgetinstance方法,返回第二部的靜態屬性

餓漢模式,無論如何都會建立乙個例項

/*

*例子取自

*以lol中的大龍(giantdragon)為例。

*大龍只有乙隻,所以該類,只能被例項化一次。

*/package charactor;

public

class

giantdragon

//準備乙個類屬性,指向乙個例項化物件。 因為是類屬性,所以只有乙個

private

static giantdragon instance =

newgiantdragon()

;//public static 方法,提供給呼叫者獲取物件

public

static giantdragon getinstance()

}

懶漢式單例模式與餓漢式單例模式不同,只有在呼叫getinstance()的時候,才會建立例項。

package charactor;

public

class

giantdragon

//準備乙個類屬性,用於指向乙個例項化物件,但是暫時指向null

private

static giantdragon instance;

//public static 方法,返回例項物件

public

static giantdragon getinstance()

//返回 instance指向的物件

return instance;

}}

補充:還有一種雙重鎖模形式。

餓漢式,是立即載入的方式,無論是否會用到這個物件,都會載入。

如果在構造方法裡寫了效能消耗較大,佔時較久的**,比如建立與資料庫的連線,那麼就會在啟動的時候感覺稍微有些卡頓。

懶漢式,是延遲載入的方式,只有使用的時候才會載入。 並且有執行緒安全的考量。

使用懶漢式,在啟動的時候,會感覺到比餓漢式略快,因為並沒有做物件的例項化。 但是在第一次呼叫的時候,會進行例項化操作,感覺上就略慢。

Java基礎 設計模式 單例模式

單例模式,顧名思義,即只能建立乙個物件,是一種十分常見的設計模式。下面介紹一下兩種比較簡單的單例模式 1 餓漢式 不可以延時載入,類載入的時候就建立物件。如果沒有用到這個物件的話,就會導致資源浪費。2 懶漢式 可以延時載入,即用到物件的時候再new物件。但是必須考慮同步問題,如果不考慮,當多個執行緒...

Java 單例設計模式(基礎)

對問題的行之有效的解決方法,其實它是一種思想。不要固化。1,單例設計模式。解決的問題 保證乙個類在記憶體中的物件唯一性。必須對於多個程式使用同一配置資訊物件時,就該保證物件唯一性。如何保證物件唯一性?1 不可以讓其他程式用new建立物件。2 在該類中,建立乙個本類例項。3 對外提供方法讓其他程式獲取...

java基礎之單例模式

單列模式 單例模式指的是乙個類只能有乙個例項,這樣的類被稱為單例類,或者單態類,即singleton class 單例類的特點 單例類只可有乙個例項 它必須自己創立這唯一的乙個例項 它必須給所有其它的類提供自己這一例項 單例模式有兩種常見的實現方式,被稱為餓漢式與懶漢式。餓漢式 載入類的時候就初始化...