設計模式從入門到精通 設計模式對比

2022-09-19 17:15:16 字數 1583 閱讀 8074

目錄首先,看下各個模式的定義

通過一張**總結其區別

抽象工廠模式

建造者模式

模板方法模式

建立型模式

~結構型模式

關注的是物件的建立

關注的是物件的建立

關注的是物件的方法結構

關注的是具體產品的建立

關注的是複雜物件的建造過程

關注的是演算法框架

產品之間一般無關係

建造過程有關係,這些建造過程都是為建立乙個複雜物件服務的,最終要到指揮者中進行組裝,生成乙個物件

各個演算法之間有關係,模板類中定義好了演算法骨架,具體演算法在子類中實現

首先,看下兩個設計模式的定義

通過一張**總結其區別

介面卡模式

橋接模式

結構型模式

~一種介面轉換成另一種介面

實現與介面分開,可以獨立變化

基類繼承+介面實現

介面組合

首先,看下各個設計模式的定義

通過一張**總結其區別

外觀模式

**模式

命令模式

結構型模式

~行為型模式

為子系統一組介面提供乙個統一的高層介面

強調的是代替本人作業,減少對實際物件的操作

請求和執行分割開

通過組合聚合

通過組合聚合+介面實現

通過組合聚合

外觀類不需要對被包裝類中方法都使用到

**類需要對被**類中方法都實現

命令者不需要對接收者中方法都使用到

外觀類可以包裝多個類

**類只**乙個類

乙個命令者只執行乙個請求,乙個接收者可對應多個命令者

首先,看下兩個設計模式的定義

通過一張**總結其區別

觀察者模式

中介者模式

行為型模式

~強調觀察者改變時統一的通知

強調同事類之間的互動

觀察者都會收到訊息

同事類可以有選擇進行互動

處理邏輯在傳送方

處理邏輯在中介者

觀察者和被觀察者分離

同事類之間互動解耦

首先,看下兩個設計模式的定義

通過一張**總結其區別

策略模式

狀態模式

行為型模式

~多個類區別不同的行為(演算法)

多個類區別不同的狀態

一組方案或演算法的相互替換,採取何種策略由外部條件決定

主要解決複雜邏輯處理的狀態遷移,這個過程由物件內部條件決定

策略類不依賴上下文

狀態類依賴上下文

首先,看下兩個設計模式的定義

通過一張**總結其區別

策略模式

模板方法模式

行為型模式

~採取何種策略由外部決定

採用何種實現由外部決定

定義一系列演算法並封裝,可相互替換,獨立於客戶變化

定義演算法骨架,將一些步驟延遲到子類實現

利用多型

利用繼承

偏重於解決演算法多樣性對**結構衝擊的問題

側重於業務流程複雜但穩定(整體演算法結構不變),而其中某些步驟變化相對劇烈(一些步驟的具體實現不同)

設計模式從入門到精通 設計模式大雜燴

目錄2 設計模式補充 要使得系統功能專業而單一,降低物件與物件之間 各個功能模組之間的依賴和耦合 don t call us,we ll call you 不要打 給我們,我們會打 給你 這是著名的 好萊塢 原則。在好萊塢,把簡歷遞交給演藝公司後就只有回家等待。由演藝公司對整個娛樂項的完全控制,演員...

設計模式從入門到精通 19 直譯器模式

目錄通過直譯器模式來實現四則運算,如計算a b c的值,具體要求 傳統方案解決四則運算問題分析 4 這樣的例子還有,比如編譯器 運算表示式計算 正規表示式 機械人等 原理類圖 直譯器模式的角色及職責 uml 類圖 核心 抽象表示式 抽象表示式類 public abstract class expre...

設計模式從入門到精通 10 享元模式

目錄傳統方案解決 展現專案 傳統方案解決 展現專案 問題分析 對原理圖的說明 即模式的角色和職責 比如圍棋 五子棋 跳棋,它們都有大量的棋子物件,圍棋和五子棋只有黑白兩色,跳棋顏色多一點。所以棋子顏色就是棋子的內部狀態 而各個棋子之間的差別就是位置的不同。當我們落子後,落子顏色是定的,但位置是變化的...