設計模式學習筆記 單例模式

2021-10-16 21:46:08 字數 1220 閱讀 4839

一.物件導向的設計原則

1.單一職責原則: 系統中每個物件只有乙個單獨的職責,對外提供一種功能,引起類變化的原因只有乙個。

2.開閉原則:即對修改關閉,對擴充套件開放。要更改時是通過增加**進行的,而不是改動現在的**,否則會產生不可預知的後果。

3.依賴注入原則:要依賴於抽象,不要依賴於具體的實現,如果有類呼叫其他的類,就應該呼叫類的介面或者抽象類,而不是直接呼叫實現類。

4.黎克特制替換原則:任何抽象類出現的地方都可以用實現類來替換。

5.迪公尺特原則:乙個物件應當對其他物件盡可能少的了解,降低耦合度。

6.介面分離原則:乙個介面應該只提供一種對外功能。

7.優先使用組合而不是繼承:繼承會導致級聯變化,較難修改。

二.單例模式

當乙個物件在整個程式中只有乙個的時候,每次獲得該物件,應該獲得都是同乙個物件,這時候就應該用單例模式。

有兩種,一種是餓漢式,餓得等不及了,一開始就建立了乙個物件。

/*單例模式(餓漢式)

*/using system;

using system.collections.generic;

using system.linq;

using system.text;

using system.threading.tasks;

namespace 設計模式demo

public void show()

//建構函式私有化

private singleton()

}class program

}另一種是懶漢式,先偷會兒懶,等到用的時候才建立:

/*單例模式(懶漢式)

*/using system;

using system.collections.generic;

using system.linq;

using system.text;

using system.threading.tasks;

namespace 設計模式demo

public void show()

//建構函式私有化

private singleton()

}class program

}注意,在懶漢式中,如果有多執行緒,有可能會出現問題。即判斷singleton==null之後,有可能發生cpu輪換。這裡我們可以加上同步的一些函式,來防止出現這種情況。或者直接採用餓漢式。

單例模式經常在檔案管理,資料庫連線池等中使用。

設計模式學習筆記 單例模式

定義 確保某乙個類只有乙個例項,而且自行例項化並向整個系統提供這個例項。單例模式的通用類圖如下 如下 public class singleton public static singleton getinstance public void dosomething 這裡需要注意幾個地方 1 要定義...

設計模式學習筆記(單例模式)

保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點。單例模式是對全域性變數的一種改進。全域性變數空間利用率比較低,且在專案中是乙個不安全隱患,特別是在多執行緒程式中,會有很多的不可 性 同時,使用全域性變數,也不符合物件導向的封裝原則。1 基礎版本 include using namespace...

設計模式 單例模式(學習筆記)

經典單例模式原理 1 單例模式 確保乙個類最多只有乙個例項,並提供乙個全域性訪問點 2 單例模式的意義 有些物件我們只需要乙個 執行緒池,快取,硬體設別等。如果多個例項會造成衝突 結果的不一致性等問題。使用靜態不變數方式來實現,或者使用全域性變數。3 單例模式類圖 經典單例模式存在的問題 改進方案 ...