目錄首先,看下各個模式的定義
通過一張**總結其區別
抽象工廠模式
建造者模式
模板方法模式
建立型模式
~結構型模式
關注的是物件的建立
關注的是物件的建立
關注的是物件的方法結構
關注的是具體產品的建立
關注的是複雜物件的建造過程
關注的是演算法框架
產品之間一般無關係
建造過程有關係,這些建造過程都是為建立乙個複雜物件服務的,最終要到指揮者中進行組裝,生成乙個物件
各個演算法之間有關係,模板類中定義好了演算法骨架,具體演算法在子類中實現
首先,看下兩個設計模式的定義
通過一張**總結其區別
介面卡模式
橋接模式
結構型模式
~一種介面轉換成另一種介面
實現與介面分開,可以獨立變化
基類繼承+介面實現
介面組合
首先,看下各個設計模式的定義
通過一張**總結其區別
外觀模式
**模式
命令模式
結構型模式
~行為型模式
為子系統一組介面提供乙個統一的高層介面
強調的是代替本人作業,減少對實際物件的操作
請求和執行分割開
通過組合聚合
通過組合聚合+介面實現
通過組合聚合
外觀類不需要對被包裝類中方法都使用到
**類需要對被**類中方法都實現
命令者不需要對接收者中方法都使用到
外觀類可以包裝多個類
**類只**乙個類
乙個命令者只執行乙個請求,乙個接收者可對應多個命令者
首先,看下兩個設計模式的定義
通過一張**總結其區別
觀察者模式
中介者模式
行為型模式
~強調觀察者改變時統一的通知
強調同事類之間的互動
觀察者都會收到訊息
同事類可以有選擇進行互動
處理邏輯在傳送方
處理邏輯在中介者
觀察者和被觀察者分離
同事類之間互動解耦
首先,看下兩個設計模式的定義
通過一張**總結其區別
策略模式
狀態模式
行為型模式
~多個類區別不同的行為(演算法)
多個類區別不同的狀態
一組方案或演算法的相互替換,採取何種策略由外部條件決定
主要解決複雜邏輯處理的狀態遷移,這個過程由物件內部條件決定
策略類不依賴上下文
狀態類依賴上下文
首先,看下兩個設計模式的定義
通過一張**總結其區別
策略模式
模板方法模式
行為型模式
~採取何種策略由外部決定
採用何種實現由外部決定
定義一系列演算法並封裝,可相互替換,獨立於客戶變化
定義演算法骨架,將一些步驟延遲到子類實現
利用多型
利用繼承
偏重於解決演算法多樣性對**結構衝擊的問題
側重於業務流程複雜但穩定(整體演算法結構不變),而其中某些步驟變化相對劇烈(一些步驟的具體實現不同)
設計模式從入門到精通 設計模式大雜燴
目錄2 設計模式補充 要使得系統功能專業而單一,降低物件與物件之間 各個功能模組之間的依賴和耦合 don t call us,we ll call you 不要打 給我們,我們會打 給你 這是著名的 好萊塢 原則。在好萊塢,把簡歷遞交給演藝公司後就只有回家等待。由演藝公司對整個娛樂項的完全控制,演員...
設計模式從入門到精通 19 直譯器模式
目錄通過直譯器模式來實現四則運算,如計算a b c的值,具體要求 傳統方案解決四則運算問題分析 4 這樣的例子還有,比如編譯器 運算表示式計算 正規表示式 機械人等 原理類圖 直譯器模式的角色及職責 uml 類圖 核心 抽象表示式 抽象表示式類 public abstract class expre...
設計模式從入門到精通 10 享元模式
目錄傳統方案解決 展現專案 傳統方案解決 展現專案 問題分析 對原理圖的說明 即模式的角色和職責 比如圍棋 五子棋 跳棋,它們都有大量的棋子物件,圍棋和五子棋只有黑白兩色,跳棋顏色多一點。所以棋子顏色就是棋子的內部狀態 而各個棋子之間的差別就是位置的不同。當我們落子後,落子顏色是定的,但位置是變化的...