JAVA設計模式 單例模式

2021-07-11 01:48:30 字數 1749 閱讀 2896

單例模式是一種常用的軟體設計模式。在它的核心結構中只包含乙個被稱為單例的特殊類。通過單例模式可以保證系統中乙個類只有乙個例項而且該例項易於外界訪問,從而方便對例項個數的控制並節約系統資源。如果希望在系統中某個類的物件只能存在乙個,單例模式是最好的解決方案。在計算機系統中,執行緒池、快取、日誌物件等物件常被設定為單例模式。單例模式常被分為三種,餓漢式、懶漢式和登記式,而登記式很少用到再次。

* 最基本的懶漢式單例模式

* @author whf

*/public class singleton

//靜態工廠方法

public static singleton getinstance()

return single;

}}

如果要在多執行緒環境中對懶漢式單例模式初始化,那麼我們必須小心的放置多個執行緒同時初始化該單例。在多執行緒環境中,我們無法保證乙個方法能夠持續執行到結束,其他執行緒的方法才開始執行。因而可能存在這樣一種情形:兩個執行緒幾乎同時嘗試初始化單例類。接下來,這兩個方法都會對該單例進行初始化。為了防止這種型別的競爭,需要提供乙個鎖機制來協調不同的執行緒中多個方法的執行。

/**

* 執行緒安全的懶漢式單例模式

* @author whf

*/public class singleton

//靜態工廠方法

public singleton getinstance()

} return single;

}}

上面的**的確解決了執行緒安全的問題,但是卻帶來了乙個新的問題:效率低下。因為真正需要new物件的情況是非常少的,然而每次都要在synchronized處排隊等候,這就使得效率低下,浪費資源。

/**

* 執行緒安全而又效率的懶漢式單例模式

* @author whf

*/public class singleton

//靜態工廠方法

public singleton getinstance()

}} return single;

}}

這種寫法被稱為雙重檢查鎖,這樣就可以減少絕大多數的加鎖操作,使得效率有所提高。

/**

* 餓漢式單例模式

* @author whf

*/public class singleton

private static final singleton singleton=new singleton();

//靜態工廠方法

public static singleton getinstance()

}

優缺點比較

1.餓漢式**簡單,並且是執行緒安全的。
2.懶漢式**複雜,執行緒不安全,但是可以實現單例的延遲建立。

Java設計模式 單例模式

單例模式 singleton 顧名思義,就是乙個類只有乙個例項。作為物件的建立模式,單例模式確保某乙個類只有乙個例項,而且自行例項化並向整個系統提供這個例項。這個類稱為單例類。顯然單例模式的要點有三個 一是某個類只能有乙個例項 二是它必須自行建立這個例項 三是它必須自行向整個系統提供這個例項。從具體...

java設計模式 單例模式

這個模式是很有意思,而且比較簡單,但是我還是要說因為它使用的是如此的廣泛,如此的有人緣,單例就是單 一 獨苗的意思,那什麼是獨乙份呢?你的思維是獨乙份,除此之外還有什麼不能山寨的呢?我們舉個比較難複製的物件 皇帝中國的歷史上很少出現兩個皇帝並存的時期,是有,但不多,那我們就認為皇帝是個單例模式,在這...

java設計模式 單例模式

單例模式介紹 單例模式分 懶漢式單例 餓漢式單例。單例模式有一下特點 1 單例類只能有乙個例項。2 單例類必須自己自己建立自己的唯一例項。3 單例類必須給所有其他物件提供這一例項。單例模式確保某個類只有乙個例項,而且自行例項化並向整個系統提供這個例項。單例有併發問題,只有乙個例項,多個執行緒就可能同...