單件模式用途:
單件模式屬於工廠模式的特例,只是它不需要輸入引數並且始終返回同一物件的引用。
如果我們能夠保證系統中自始至終只有唯一乙個資料庫連線物件,顯然我們會節省很多記憶體開銷和cpu利用率。這就是單件模式的用途。當然單件模式不僅僅只用於這樣的情況。在《設計模式:可復用物件導向軟體的基礎》一書中對單件模式的適用性有如下描述:
1、當類只能有乙個例項而且客戶可以從乙個眾所周知的訪問點訪問它時。
2、當這個唯一例項應該是通過子類化可擴充套件的,並且客戶應該無需更改**就能使用乙個擴充套件的例項時。
下面對單件模式的懶漢式與餓漢式進行簡單介紹:
1、餓漢式:在程式啟動或單件模式類被載入的時候,單件模式例項就已經被建立。
2、懶漢式:當程式第一次訪問單件模式例項時才進行建立。
如何選擇:如果單件模式例項在系統中經常會被用到,餓漢式是乙個不錯的選擇。
反之如果單件模式在系統中會很少用到或者幾乎不會用到,那麼懶漢式是乙個不錯的選擇。
餓漢模式demo:
public******()
public
static
****** get******()
}
一般用於列舉法:
enumsingle
public
void
print()
}public
class
singledemo
懶漢模式 demo:
classsingle
}
懶漢模式在使用時,容易引起不同步問題,所以應該建立同步"鎖",demo如下
classsingle1
//同步函式的demo
public
static
synchronized
single1 getinstance()
//同步**快的demo加鎖,安全高效
public
static
single1 getinstanceblock()
return
s;
}}
Java單例模式 懶漢式和餓漢式
單件模式屬於工廠模式的特例,只是它不需要輸入引數並且始終返回同一物件的引用。1 當類只能有乙個例項而且客戶可以從乙個眾所周知的訪問點訪問它時。2 當這個唯一例項應該是通過子類化可擴充套件的,並且客戶應該無需更改 就能使用乙個擴充套件的例項時。下面對單件模式的懶漢式與餓漢式進行簡單介紹 1 餓漢式 在...
單例模式 懶漢式 和 餓漢式
單例模式三要素 a 私有構造方法 這樣外界就沒辦法建立物件 b 私有靜態引用指向自己例項 c 以自己例項為返回值的公有靜態方法 對外暴露介面獲取例項 在spring中建立的bean例項預設都是單例模式存在的。所謂 懶漢式 與 餓漢式 的區別,是在與建立單例物件的時間不同。懶漢式 是在你真正用到的時候...
單例模式 餓漢式和懶漢式
1.單例模式。singleton無論外界有多少物件都是乙個指向同乙個位址。節約空間。1 構造方法私有化 2 在本類中建立乙個static修飾的物件。3 所有的屬性必須私有化。4 通過乙個方法來把本類中建立的該物件返回。2.餓漢式 指全域性的單例例項在類裝載時構建。class people publi...