設計模式是在大量的實踐中總結和理論化之後優選的**結構、程式設計風格、以及解決問題的思考方式。我們聽說比較多的就是單例模式,工廠模式,**模式。
單例模式,或者叫單例設計模式,就是採用一定的方法保證在整個的軟體系統中,對某個類只能存在乙個物件例項,並且該類只提供乙個取得其物件例項的方法。
所以這就要求我們把類的構造方法的訪問許可權設定成private,這樣在類的外部就不能使用new產生類的物件了。這個唯一的物件,我們只在類的內部產生。類的外部如果想得到這個物件可以呼叫該類的靜態方法返回。又因為靜態方法只能訪問靜態成員變數,所以這個物件還得宣告成靜態的。
比較熟悉的有幾種實現方式,如餓漢式、懶漢式。
餓漢:還沒用就造好了。
class
singleton
private
static singleton instance =
newsingleton()
;public
static singleton getinstance()
}public
class
main
}
懶漢:什麼時候用什麼時候造。
class
singleton
private
static singleton instance = null;
public
static singleton getinstance()
return instance;}}
public
class
main
}
專案
好處壞處
餓漢式執行緒安全的
物件載入時間過長
懶漢式延遲物件的建立
執行緒不安全
除了main主線程外,我們再建立乙個執行緒,為了讓效果更明顯,我們在singleton建立物件前sleep(1000)。
class
singleton
private
static singleton instance = null;
public
static singleton getinstance()
catch
(interruptedexception e)
instance =
newsingleton()
;}return instance;}}
public
class
main})
.start()
; singleton instance2 = singleton.
getinstance()
; system.out.
println
(instance2)
;//singleton@4554617c
}}
使用同步**塊即可。
class
singleton
private
static singleton instance = null;
public
static singleton getinstance()
}}return instance;}}
public
class
main})
.start()
; singleton instance2 = singleton.
getinstance()
; system.out.
println
(instance2)
;//singleton@4554617c
}}
面試的時候要麼寫餓漢式,要麼寫執行緒安全的懶漢式。 Singleton 單例 模式
singleton 模式的宗旨在於確保某個類只有乙個例項,別且為之提供乙個全域性訪問點。為了防止其他工作人員例項化我們的類,可以為該類建立唯一乙個構造器,並將構造器的可見 設定為私有。值得注意的是,如果我們建立了其他的非私有的構造器,或者根本沒有為該類提 供構造器,那麼其他人員還是能例項化我們的類。...
Singleton 單例 模式
今天看了,單例模式。感覺他的本質就是,控制類例項的個數。特例就是,控制static變數的唯一性,保證各個程式共享著同一例項。乙個例子 package singleton description 這是乙個單例模式的使用demo author kyle goal 實現乙個類僅有乙個例項 singleto...
單例(Singleton)模式
單例模式的特點 singleton模式包含的角色只有乙個,那就是singleton。singleton擁有乙個私有建構函式,確保使用者無法通過new取得singleton的例項。除此之外,該模式中包含乙個靜態私有成員變數instance與靜態公有方法instance。instance方法負責檢驗並例...