設計模式是指在軟體開發中,經過驗證的,用於解決在特定環境下,重複出現的,特定問題的解決方案。
1. 設計模式三大類
總體來說設計模式分為三大類:
建立型模式,共五種:工廠方法模式、抽象工廠模式、單例模式、建造者模式、原型模式。
結構型模式,共七種:介面卡模式、裝飾器模式、**模式、外觀模式、橋接模式、組合模式、享元模式。
行為型模式,共十一種:策略模式、模板方法模式、觀察者模式、迭代子模式、責任鏈模式、命令模式、備忘錄模式、狀態模式、訪問者模式、中介者模式、直譯器模式。
2. 怎麼學習設計模式
找穩定點和變化點,將變化點隔離處理
先滿足設計原則,慢慢迭代出設計模式
設計模式適用於即有穩定點,又有變化點的場景;主要使用了抽象思維和分治思維。
很多設計模式在一開始並不是很明顯,需要在迭代中逐漸完善。但是,設計原則是不變的,因此我們在最開始就可以參照設計原則去實現**。
3. 基礎--類模型
繼承基類和組合基類物件在記憶體中的表現是一致的,而組合基類指標在記憶體上表現得更適合擴充套件。
繼承中的虛函式重寫,適合子類擴充套件。
4. 基礎--類關係
從三種訪問許可權public、protected、private和友元關係我們可以得到上圖中類之間的元素訪問許可權。
設計原則總共有8種。在程式設計之初,我們會比較關注開閉原則、單一職責、黎克特制替換和介面隔離。
依賴倒置
開放封閉
面向介面
封裝變化點
單一職責
黎克特制替換
介面隔離
組合優於繼承定義
定義乙個操作中的演算法的骨架 ,而將一些步驟延遲到子類中。 template method使得子類可以不改變乙個演算法的結構即可重定義該演算法的某些特定步驟。 ——《 設計模式》 gof
背景某個品牌動物園,有一套固定的表演流程,但是其中有若干個表演子流程可創新替換,以嘗試迭代更新表演流程;
要點本質
結構圖
定義定義物件間的一種一對多(變化)的依賴關係,以便當乙個物件(subject)的狀態發生改變時,所有依賴於它的物件都得到通知並自動更新。 ——《 設計模式》 gof
訂閱發布,被動觸發。
背景氣象站發布氣象資料給資料中心,資料中心經過處理,將氣象資訊更新到兩個不同的顯示終端(a 和b);
要點實用場景
本質結構圖
定義定義一系列演算法,把它們乙個個封裝起來,並且使它們可互相替換。該模式使得演算法可獨立於使用 它的客戶程式而變化。 ——《設計模式》 gof
背景某商場節假日有固定**活動,為了加大**力度,現提公升國慶節**活動規格;
要點本質
結構圖
github:
設計模式 工廠設計模式 一
工廠設計模式 就是當我們需要批量建立多種型別的物件時 需要用到,主要分為三種形式 1 靜態工廠,也叫簡單工廠模式,就是你傳乙個型別我建立對應的型別,spring中主要用到的就是這種模式 不多說,直接上 通用的產品介面,product 這個看需求,也可以定義為抽象類,根據你的物件之間的關係來定的 pa...
設計模式(一) 設計模式概述
模擬建築學 質量可以客觀評價 我們可以得到設計模式背後的觀點 軟體系統的質量可以客觀度量。模式的描述 模式的名稱 模式的目的,即要解決的問題 實現方法 為了實現該模式我們必須考慮的限制和約數因素 gof 四人幫 的工作是將已有的模式識別出來。而非創造 模式的關鍵特徵 專案描述 名稱每個模式都有唯一用...
設計模式一 模板設計模式
它的應用場景是同乙個介面的不同實現類存在公共 這樣就可以用模板方法模式將不變部分封裝在模板類中,將可變部分作為抽象方法留給子類中,從而復用頂級邏輯的 1 使用模板方法模式統一呼叫外部服務介面 2 使用模板方法模式對外提供的統一介面服務 3 使用模板方法模式實現通知服務 我們可以將固定流程寫到父類中,...