單例模式就是保證乙個類只能有乙個物件,並提供乙個訪問該例項的全域性的訪問點。
單例模式在一些只需要有乙個例項的場景下比如windows的任務管理器,保證只建立乙個物件避免不必要的系統資源消耗。
單例模式按照建立例項的時間不同分為類一載入就建立物件的餓漢式和延時建立物件的懶漢式。
餓漢式的是類一載入就建立物件,天然執行緒安全;方法沒有同步,呼叫效率高;但是沒有延時載入更節省系統資源的優勢。
**如下:
classsingletondemo
private staticsingletondemo instance
=newsingletondemo();
public staticsingletondemo getinstance()
}懶漢式是當需要物件時才建立物件,執行緒安全,方法要同步呼叫效率低。但是比餓漢式更節省資源。
**如下:
classsingletondemo2
private staticsingletondemo2 instance2
;public static synchronizedsingletondemo2 getinstance2()
returninstance2;}
}為了解決餓漢式和懶漢式的缺點:
我們還有其他的優化。
1.雙重檢查鎖式,
在懶漢式中我們是每次呼叫方法就要同步,現在我們把,同步**塊移動至if==null上,當不為空
時才用sybchronized關鍵字。
2.靜態內部類實現方式(兼顧執行緒安全、懶載入和高呼叫效率優點)
**如下
classsingletondemo3
private static classsingletonclassinstance
public staticsingletondemo3 getinstance()
}3.列舉方式:
**如下:
/*** 列舉類天然就是單例的,可以避免其他方式的反射和反序列化的漏洞;
* 效率也挺高的
* 缺點就是沒有懶載入
*/public enumsingletondemo5 {
instance5;
//也可以在這裡定義一些其他方法
public void
單例模式詳解
單例模式的意思就是只有乙個例項。單例模式確保某乙個類只有乙個例項,而且自行例項化並向整個系統提供這個例項。這個類稱為單例類。1.單例模式的要點 顯然單例模式的要點有三個 一是某個類只能有乙個例項 二是它必須自行建立這個例項 三是它必須自行向整個系統提供這個例項。2.單例模式的優點 1.例項控制 si...
單例模式詳解
單例模式是設計模式中比較常用的,今天我要詳細的了解一下,並且進行一些比較 public class singleton public static singleton getinstance catch interruptedexception e 單例模式的精髓就在這,類的內部可以new inst...
單例模式 詳解
保證乙個類僅有乙個例項,並且提供乙個訪問它的全域性訪問點 在該例項不存在的情況下,可以通過乙個方法建立乙個類來實現建立類的新例項 如果例項已經存在,它會簡單返回該物件的引用 建立型模式 var singleton function return var singlea singleton.getin...