設計模式 單例模式(Singleton)

2021-05-26 11:38:35 字數 1200 閱讀 3736

單例模式,保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點。

通常我們可以讓乙個全域性變數使得乙個物件被訪問,但它不能防止你例項化對個物件,乙個最好的辦法就是讓類自身負責儲存它的唯一例項,這個類可以保證沒有其他例項可以被建立,並且它可以提供乙個訪問該例項的方法。

singleton類,定義乙個getinstance操作,允許客戶訪問它的唯一例項,getinstance是乙個靜態方法,主要負責建立自己的唯一例項。

class singleton

private static singleton instance;

private singleton()

public static singleton getinstance()

if(instance==null)

instance = new singleton();

return instance;

客戶端:s1和s2是同乙個的

singleton s1 = singleton.getinstance();

singleton s2 = singleton.getinstance();

單例模式因為singleton類封裝它的唯一例項,這樣它可以嚴格地控制客戶怎樣訪問它以及何時訪問它,簡單地說就是對唯一例項的受控訪問。

多執行緒時的單例

多個執行緒同時訪問singleton類建立例項是,會有可能建立多個例項的

1.用lock確保當乙個執行緒位於**的臨界區時,另乙個執行緒不進入臨界區

2.靜態初始化,在第一次引用類的任何成員時建立例項:private static readonly

靜態初始化的方式是在自己被載入時就將自己例項化,稱為餓漢式

第一次被引用時才例項化稱為懶漢式

區別是靜態初始化的方式提前占用系統資源,懶漢式又面臨多執行緒訪問是安全性問題

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方法,讓外部來訪問這個類的唯一例項。三.呼叫示例圖 實現 四.控制例項個數 簡單演示如何擴充套件單例模式,控制例項數...