單例模式( singleton模式),乙個類有且僅有乙個例項,並且自行例項化向整個系統提供(公開)。
具體實現的角度來說:
構造方法私有化
靜態屬性指向例項
public static
的getinstance
方法,返回第二部的靜態屬性
餓漢模式,無論如何都會建立乙個例項
/*
*例子取自
*以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 單例類的特點 單例類只可有乙個例項 它必須自己創立這唯一的乙個例項 它必須給所有其它的類提供自己這一例項 單例模式有兩種常見的實現方式,被稱為餓漢式與懶漢式。餓漢式 載入類的時候就初始化...