先聊一下關於設計的幾個原則
設計模式(1)單例模式(建立模式)
注意事項:
1. 允許子類派生
2. 不要實現 icloneable 介面 這個介面繼承後可能會導致生成多個示例,違背了模式的原本意思
3. 不要序列化 理由同上
4. 不要再多執行緒下使用,(如果需要再多執行緒下使用的話見下面舉例)
單利模式作用
(1)確保乙個類只有乙個例項;
(2)提供乙個訪問它的全域性訪問點
利用**實現乙個簡潔的單例
classsingletonclass
public
static
singletonclass newinstance
}}
這個類在被呼叫時 singletonclass.newinstance();
優點:(1)確保乙個類只有乙個例項;
(2)提供乙個訪問它的全域性訪問點
缺點:(多執行緒環境下就會破壞單利的初衷:會形成多個類的例項)
利用**實現 在多執行緒環境下的單例
通過雙重判斷 對資源進行鎖定 確保再多執行緒環境下確保只有乙個例項
注意:**注釋
classmultithreading_singleton
public
static
multithreading_singleton newinstance}}
return
example;}}
}
利用**實現 單執行緒多執行緒通用單例
優點:靜態建構函式 在呼叫時 只會產生乙個,系統在預設的情況下彷彿已經對資源加過鎖
缺點是不能帶引數
原因: (1):靜態函式不允許不允許出現訪問修飾符
(2):靜態建構函式必須無引數
classsingletoncurrency
}
下面**是讀上面**的解釋**:
public static readonly singletoncurrency example = new singletoncurrency(); 等同於省略了靜態建構函式,這裡的省略不是編譯上的省略而是**上的省略,在系統編譯時還是會有乙個靜態構造的
classsingletoncurrency_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.提供乙個對外訪問的方法 單例模式可以通過懶漢式和餓漢式來實現。懶漢式 執行緒不安全 懶漢式 單例模...