一.物件導向的設計原則
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 單例模式類圖 經典單例模式存在的問題 改進方案 ...