設計模式(一)單例模式 建立模式

2022-01-20 09:48:17 字數 1444 閱讀 8194

先聊一下關於設計的幾個原則

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

注意事項:

1.  允許子類派生

2. 不要實現 icloneable 介面  這個介面繼承後可能會導致生成多個示例,違背了模式的原本意思

3. 不要序列化  理由同上

4. 不要再多執行緒下使用,(如果需要再多執行緒下使用的話見下面舉例)

單利模式作用

(1)確保乙個類只有乙個例項;

(2)提供乙個訪問它的全域性訪問點

利用**實現乙個簡潔的單例

class

singletonclass

public

static

singletonclass newinstance

}}

這個類在被呼叫時 singletonclass.newinstance();

優點:(1)確保乙個類只有乙個例項;

(2)提供乙個訪問它的全域性訪問點

缺點:(多執行緒環境下就會破壞單利的初衷:會形成多個類的例項)

利用**實現  在多執行緒環境下的單例

通過雙重判斷 對資源進行鎖定 確保再多執行緒環境下確保只有乙個例項

注意:**注釋

class

multithreading_singleton

public

static

multithreading_singleton newinstance}}

return

example;}}

}

利用**實現 單執行緒多執行緒通用單例

優點:靜態建構函式 在呼叫時 只會產生乙個,系統在預設的情況下彷彿已經對資源加過鎖

缺點是不能帶引數   

原因: (1):靜態函式不允許不允許出現訪問修飾符

(2):靜態建構函式必須無引數

class

singletoncurrency

}

下面**是讀上面**的解釋**:

public static readonly singletoncurrency example = new singletoncurrency();  等同於省略了靜態建構函式,這裡的省略不是編譯上的省略而是**上的省略,在系統編譯時還是會有乙個靜態構造的

class

singletoncurrency_remark

private

singletoncurrency_remark()

}

推薦書籍     大話設計模式 (中文)   《head first 設計模式》

希望大家指出不足之處  謝謝

設計模式 建立模式 單例 C 描述

second60 20180425 單例是23種設計模式中最常用的,沒有之一。一句話,單例就是乙個全域性變數 物件 在整個程式生命週期,只有乙個例項。單例的實現很簡單。在c 中,用 static 函式和static 變數來實現或用模來來繼承。class singleton private stati...

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

類載入時建立物件 常量 class eagersingleton public static eagersingleton getinstance 延遲載入 假如在某一瞬間 執行緒a 和 執行緒b 都在呼叫getinstance 方法,此時instance物件為null值,均能通過instance ...

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

單例模式 singletonparrten 保證乙個類只有乙個例項,並提供乙個訪問它的全域性訪問點 建立單例模式需要三方面操作 1.建立乙個物件 2.定義乙個私有構造方法 禁止外部類對其進行例項化 3.提供乙個對外訪問的方法 單例模式可以通過懶漢式和餓漢式來實現。懶漢式 執行緒不安全 懶漢式 單例模...