java 單例模式 Singleton

2021-09-22 12:31:54 字數 1538 閱讀 9874

單例模式分為懶漢式與餓漢式兩種模式:

相同點:在類建立的同時就已經建立好乙個靜態的物件供系統使用,並且以後不再改變。

不同點:執行緒安全,在建立例項物件時,不加上synchroized,則會導致對物件的訪問不是執行緒安全。

懶漢式是延遲載入,直到用的時候才載入(以時間還空間)

餓漢式是即時載入,一開始就載入(以空間換時間)

注:單例模式是指類的建立,並不是類中的屬性的建立。

應用優勢與時機:

優勢:例項數量設定為乙個,有利於節約記憶體空間

可為整個程式框架提供共享變數,提高**的重用性

可減少jva程式命名的空間

時機:當系統中多個程式只需要呼叫同乙個例項物件時

無需修改客戶端程式,即可使用乙個由子類進行擴充套件的例項時

系統的效能需要進一步優化

那麼說兩個例子吧:

//餓漢式單例

public class jacksingleton

public synchronized static jacksingleton getinstance()

}

//懶漢式

public class jacksingletonone

synchronized static jacksingletonone getinstance()

return jacksingletonone;

}}

執行結果:

餓漢式:---------

第0次:com.example.design_pattern.singleton.jacksingleton@3cd1a2f1

第1次:com.example.design_pattern.singleton.jacksingleton@3cd1a2f1

第2次:com.example.design_pattern.singleton.jacksingleton@3cd1a2f1

第3次:com.example.design_pattern.singleton.jacksingleton@3cd1a2f1

第4次:com.example.design_pattern.singleton.jacksingleton@3cd1a2f1

懶漢式:---------

第0次:com.example.design_pattern.singleton.jacksingletonone@2f0e140b

第1次:com.example.design_pattern.singleton.jacksingletonone@2f0e140b

第2次:com.example.design_pattern.singleton.jacksingletonone@2f0e140b

第3次:com.example.design_pattern.singleton.jacksingletonone@2f0e140b

第4次:com.example.design_pattern.singleton.jacksingletonone@2f0e140b

Java設計模式之單例模式(Singleton)

前言 在總結okhttp的時候,為了管理網路請求使用到了單例模式,晚上實在沒啥狀態了,靜下心來學習總結一下使用頻率最高的設計模式單例模式。單例模式 單例模式確保某個類只有乙個例項,而且自行例項化並向整個系統提供這個例項。單例特點 單例分類 1 懶漢單例 1 非執行緒安全實現 public class...

設計模式 建立型模式 單例模式 Singleton

4種單例模式 單執行緒單例 類class single private static single sin null public static single createinstance return sin 呼叫 console.writeline 單執行緒單例模式 single sin sin...

大話設計模式二十一 單例模式(Singleton)

一.單例模式定義 保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點。二.結構和說明 singleton負責建立singleton類自己的唯一例項,並提供乙個getinstance方法,讓外部來訪問這個類的唯一例項。三.呼叫示例圖 實現 四.控制例項個數 簡單演示如何擴充套件單例模式,控制例項數...