Singleton學習筆記

2021-08-26 04:32:02 字數 1017 閱讀 4813

單例模式的類圖還是比較簡單,自己管理自己的例項,看一下類圖

用到的單例的地方還是比較多的,比如在手機遊戲開發中,背景**的管理就可以設定成乙個單例,只要設定成為靜音,不管在遊戲中如何切換都是靜音的

單例模式的三個基本要素是:私有構造器+私有靜態成員變數+全域性靜態方法

而傳統的延遲載入在多執行緒的應用中很容易出現問題,會產生多個物件,造成一些莫名其妙的問題,傳統的延遲載入的**如下:

// 1、建立乙個全域性的靜態常量引用 private static musicplayer uniqueinstance; // 2、私有化構造方法 private musicplayer() // 3、建立取得取得單例物件的方法 // 3-1、非執行緒安全取得物件的方法(延遲載入) public static musicplayer getinstance() return uniqueinstance; }

而解決執行緒完全的方法有三種:

1、方法加同步:

// 3-2、通過synchronized同步保證執行緒安全,但效率會下降很多 public synchronized static musicplayer getinstance() return uniqueinstance; }

2、採用積極載入的方式:

// 3-3、通過積極載入在jvm載入這個類是馬上建立乙個單件例項 private static musicplayer uniqueinstance = new musicplayer(); public static musicplayer getinstance() return uniqueinstance; }

3、雙重加鎖檢測:

// 3-4、雙重檢測加鎖(jdk版本要求5+) private volatile static musicplayer uniqueinstance; public static musicplayer getinstance() } } return uniqueinstance; }

總地來說單例模式還是比較簡單的,要注意一點的是產生單例模式的方法要處理一下,適應多執行緒的情況。

設計模式學習筆記 九 Singleton模式

設計模式 一書對singleton模式是這樣描述的 保證乙個類只有乙個例項,並提供乙個訪問它的全域性訪問點。這個模式比較簡單,下面給出乙個例子 public class singleton public static singleton getinstance 這個程式在單執行緒下執行不會有問題,但...

設計模式學習筆記 九 Singleton模式

設計模式 一書對singleton模式是這樣描述的 保證乙個類只有乙個例項,並提供乙個訪問它的全域性訪問點。這個模式比較簡單,下面給出乙個例子 public class singleton public static singleton getinstance 這個程式在單執行緒下執行不會有問題,但...

設計模式筆記 Singleton

單例模式singleton 建構函式定義為private的作用是阻止類在外部被例項化。定義顯式建構函式則預設的建構函式會失效。保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點。定義乙個靜態方法 package singleton.pattern public class singleton 單...