設計模式學習筆記 6 單例模式

2021-06-04 12:41:40 字數 1137 閱讀 7410

單例模式:(singleton)

確保乙個類只有乙個例項,並提供全域性訪問點。

示例**:

public class singleton 

private singleton(){}

public static singleton getinstance()

@override

public string tostring()

}

執行結果:

this is a singleton instance.

對單例模式的改進:

1. 對於多執行緒的改進

from:

public static singleton getinstance()

to:

public static synchronized singleton getinstance()

synchronized  迫使我們在進入方法之前,進行同步, 先要等待其他執行緒離開該方法後才能進入該方法。

但是缺點是同步的方法可能造成程式執行效率下降100倍。

2.  提前例項化

to:

public class singleton 

private singleton(){}

public static synchronized singleton getinstance()

@override

public string tostring()

}

3. 雙重檢查加鎖

to:

public class singleton 

private singleton(){}

public static singleton getinstance()

}} return uniqueinstance;

} @override

public string tostring()

}

如果沒有例項還沒有建立,才進行同步,那麼只有一次同步,就是在建立第乙個的例項的時候。

設計模式學習筆記 單例模式

定義 確保某乙個類只有乙個例項,而且自行例項化並向整個系統提供這個例項。單例模式的通用類圖如下 如下 public class singleton public static singleton getinstance public void dosomething 這裡需要注意幾個地方 1 要定義...

設計模式學習筆記(單例模式)

保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點。單例模式是對全域性變數的一種改進。全域性變數空間利用率比較低,且在專案中是乙個不安全隱患,特別是在多執行緒程式中,會有很多的不可 性 同時,使用全域性變數,也不符合物件導向的封裝原則。1 基礎版本 include using namespace...

設計模式 單例模式(學習筆記)

經典單例模式原理 1 單例模式 確保乙個類最多只有乙個例項,並提供乙個全域性訪問點 2 單例模式的意義 有些物件我們只需要乙個 執行緒池,快取,硬體設別等。如果多個例項會造成衝突 結果的不一致性等問題。使用靜態不變數方式來實現,或者使用全域性變數。3 單例模式類圖 經典單例模式存在的問題 改進方案 ...