建立型設計模式(1) 單例模式

2021-06-13 16:42:45 字數 1162 閱讀 9346

動機

有時候只有乙個類的例項是很重要的。比如,乙個系統應該只有乙個視窗管理例項。

單例模式是最簡單設計模式:類負責例項化自己,確保只有乙個例項,並且提供乙個訪問這個例項的入口。

目的

1. 確保只有乙個例項被建立。

2. 提供訪問這個例項的入口。

實現

使用final確保被建立一次,private的建構函式確保不被例項化。public的getinstance方法確保外部能夠訪問。下面是餓漢模式:

public class singleton 

public static singleton getinstance()

}

懶漢模式:

public class singletondemo 

public static singletondemo getinstance() }}

return instance;}}

適用場景和例項

1. logger類,防止每次列印log的使用都建立乙個logger例項。

2. 控制類,一般整個系統都只有乙個控制例項。

具體問題和實現

1. 執行緒安全,健壯的單例模式應該是執行緒安全的。

2. 懶漢模式使用了雙重鎖機制。

3. 餓漢模式使用靜態變數,在程式載入時就例項化,保證了只有乙個例項。

4. 抽象工廠和工廠方法通常被設計成單例模式,以保證只有乙個工廠。

5. 使用序列化和反序列化時,會有多個例項被建立,使用readresolve函式避免這個情況,不過最好是不要使用序列化。

public class singleton implements serializable 

}

關鍵點

1. 在多執行緒的程式中,要注意資料的同步。

2. 序列化時要使用readresolve方法返回例項,避免多個物件被建立。

3. 如果被多個類載入器載入時,會有多個例項被建立。

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

有的 寫過,不再想起 有的 複製貼上後,還將回首。上個專案已經進入收尾,利用年前的閒暇,對設計模式進行乙個較為完整的學習。ok,let s go!建立型 單例模式 如果我們需要保證系統內對於某個類最多只能存在乙個例項的時候,我們就會使用單例模式。例如快取池,資料連線池,執行緒池等。在多執行緒環境下,...

設計模式之建立型 1 單例模式

定義 保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點。三種寫法 1 懶漢式 public class singletonlazy public static singletonlazy getinstance return instance 優點 使用時才建立,節約資源 缺點 執行緒不安全,...

設計模式 建立型 單例模式

單例模式在整個軟體開發中還是比較常用的,頻繁使用且過程穩定的方法 全域性變數都可以使用該模式,也可以叫做公共類。單例模式需要遵循要麼出現一次,要麼不出現的規則。單例模式不提供外部例項化功能,在內部自已例項化以保證其唯一例項。具體如下 class common public static common...