java設計模式之單例模式

單例模式:我們通常又稱之爲單子或單態模式。

爲什麼會出現單例模式呢?因爲需求,有時候我們需要針對某個類,我們得到它的實例是同一個,無論獲取多少次。因此我們就開始想怎麼實現這個功能了。

①首先我們想到的肯定是不能在類的外面,採用new 關鍵字來創建實例了,因爲每new一個就新產生了一個對象。因此我們 就想到了將構造器私有化,new的對象放在類裏面去。 

②在類裏面,再提供一個public 的靜態方法供外部去調用,通過方法得到該類的實例。這樣我們就實現了單例。

demo代碼如下:


PS:有人也將getInstance()這個方法稱之爲靜態工廠方法。

我們測試一下,結果如下:


當然,在某些書籍上面將上面的單例實現稱之爲“餓漢”單例模式。所以又有另一種“懶漢”單例模式,如下,基本原理是一樣的,將構造器私有化:


然而在多線程高併發的情況下。可能還是會出現多個對象存在的情況,因此我們可以將方法添加同步鎖的機制,但這樣又會導致性能降低。

如下:


擴展一下思維,我們的單例可以,擴展爲多例,如下:


我們將需要的car 都放在 carList裏面,就可以實現多例了,最典型的例子就是我們jdbc裏面的連接池,就應該是多例實現的。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章