關於設計模式,很久以前通過在網上看了一些資料關於講設計模式的(推薦大話設計模式),雖說都似乎看懂了,但每次在需要用到相關設計模式的時候總是想不起來,主要對每種設計模式使用場景沒研究透,一直停留在錶面。最近做設計系統的時候突然覺得這塊還是有必要深入一點,通過各方面查找重新梳理了一下設計模式,個人理解筆 ...
關於設計模式,很久以前通過在網上看了一些資料關於講設計模式的(推薦大話設計模式),雖說都似乎看懂了,但每次在需要用到相關設計模式的時候總是想不起來,主要對每種設計模式使用場景沒研究透,一直停留在錶面。最近做設計系統的時候突然覺得這塊還是有必要深入一點,通過各方面查找重新梳理了一下設計模式,個人理解筆記
一、 設計模式(Design pattern)代表了最佳的實踐,通常被有經驗的面向對象的軟體開發人員所採用。設計模式是軟體開發人員在軟體開發過程中面臨的一般問題的解決方案。這些解決方案是眾多軟體開發人員經過相當長的一段時間的試驗和錯誤總結出來的 --------引用菜鳥教程設計模式一段話、
二、設計模式六大原則
1、開閉原則(Open Close Principle):對擴展開放,對修改關閉;系統設計的時候考慮後期如果新需求變更等,不要通過修改原有類代碼,通過新增類來處理
2、里氏代換原則(Liskov Substitution Principle):任何父類出現的地方都可以用子類去替換,從而達到父類復用
3、依賴倒轉原則(Dependence Inversion Principle):依賴於介面編程;上端依賴抽象,不具體依賴實現。例如:電腦廠家在生產電腦的時候,不會去指定按照某一個型號的滑鼠去生產,他們會按照USB介面去實現,滑鼠只要實現這個USB介面就可以
4、介面隔離原則(Interface Segregation Principle): 用多個專門的介面,而不使用單一的總介面,客戶端不應該依賴他不需要的介面
5、迪米特法則,又稱最少知道原則(Demeter Principle):兩個類儘量不要有太多的交際通訊,假如一定要通訊,通過第三方來協調
6、合成復用原則(Composite Reuse Principle):儘量使用合成/聚合的方式,而不是使用繼承。
三、23種設計模式
設計模式分為三類:
創建型模式:關註對象的創建(共五種:工廠方法模式、抽象工廠模式、單例模式、建造者模式、原型模式。)
結構型模式:關註類與類之間的關係(共七種:適配器模式、裝飾器模式、代理模式、外觀模式、橋接模式、組合模式、享元模式)
行為型模式:關註對象和行為的分離(共十一種:策略模式、模板方法模式、觀察者模式、迭代子模式、責任鏈模式、命令模式、備忘錄模式、狀態模式、訪問者模式、中介者模式、解釋器模式)
四、主要講一下單例模式實現方式
單例模式有2種實現方式(飽漢試、餓漢試)
飽漢試:在第一次使用的時候才初始化類對象
餓漢試:系統載入的時候提前初始化對象,通過靜態構造函數實現

public class Singleton { private static Object _objectInstance = new object(); public static Singleton _instance = null; private Singleton() //私有化構造方法防止外面new對象 { System.Threading.Thread.Sleep(5000);//模擬構造延遲測試 } #region 單例方法實現(飽漢試) //public static Singleton CreateInstance() //{ // if (_instance == null) //雙層判斷優化性能+線程安全 // { // lock (_objectInstance) // { // if (_instance == null) // { // _instance = new Singleton(); // } // } // } // return _instance; //} #endregion #region 靜態構造函數實現單例 (餓漢試) static Singleton() { if (_instance == null) //雙層判斷優化性能+線程安全 { lock (_objectInstance) { if (_instance == null) { _instance = new Singleton(); } } } } #endregion }View Code