單例模式,顧名思義就是讓乙個類在執行過程中只有乙個例項。
public class singleton
// 靜態工廠方法,返回此類的唯一例項
public static singleton getinstance()
} }
return singleton;
} }
加鎖是為了防止多執行緒同時呼叫時,new出多個例項;在加鎖前和加鎖後都需要判斷例項是否為null,第一處為空判斷是為了效能考慮,只有例項為空才對鎖進行操作;第二處為空判斷是防止兩個執行緒同時通過第乙個判斷後例項化出兩個例項,這樣就違背了單例原則。
什麼情況下用使用單例?
我認為需要同時滿足以下幾個條件:
1、乙個物件在系統中只需要存在乙個例項,比如一些工具類
2、該物件的例項化和銷毀比較耗費資源
3、該物件被大量使用
以上三點是我自己總結的,如果有不對的地方請大家幫我指出來。
這種用法我不是很理解它的好處在**,感覺拿單例來做執行緒間的通訊一不留神很容易出問題。
設計模式之二 單例模式
單例模式是工作中經常用的一種設計模式,其主要用於設計程式中公共使用的部分,下面是三種常用常見的三個寫法 第一種 執行緒安全不懶漢模式 public class singleton public static singleton getinstance return instance 優點 容易理解單...
設計模式筆記二 單例模式
單例模式,顧名思義,用來保證乙個物件只能建立乙個例項,除此之外,它還提供了對例項的全域性訪問方法 1 懶漢式,執行緒不安全 public class singletone public static singletone getinstance return instance 2 懶漢式,執行緒安全...
設計模式學習筆記 單例模式
定義 確保某乙個類只有乙個例項,而且自行例項化並向整個系統提供這個例項。單例模式的通用類圖如下 如下 public class singleton public static singleton getinstance public void dosomething 這裡需要注意幾個地方 1 要定義...