zhouer's blog

閱讀、學習、寫作自留地

《圖解設計模式》學習筆記

zhouer / 2022-04-26


相關代碼

Iterator 模式

用於在數據集合中按照順序遍歷集合。

image-20220423175824810

Adapter 模式

類適配器模式:使用繼承類和繼承要求實現方法的接口,重寫接口方法時調用父類方法實現包裝。

image-20220423175913707

對象適配器模式:利用被包裝類的具體實現的方法調用實現包裝,即在適配器中創建一個被包裝類的實例。

image-20220423175928970

Template Method 模式

在父類中定義處理流程的框架,在子類中實現具體處理

image-20220423180005880

Factory Method 模式

image-20220423180041030

Singleton 模式

單例。

image-20220423180115824

Prototype 模式

根據實例來生成新實例。

image-20220423180146891

Builder 模式

image-20220424095255061

Abstract Factory 模式

易於增加具體的工廠,難以增加新的零件。

image-20220424104201204

Bridge 模式

將類的功能層次結構和實現層次結構連接,即對接口添加功能的需求和對接口規定 API 不同實現的需求。Bridge 模式將兩者區隔開並創建一個連接通道。

image-20220424112822832

繼承是強關聯,委托是弱關聯(方法調用)。

Strategy 模式

整體替換。

image-20220424121451058

Composite 模式

使容器和內容具有一致性,創造出遞歸結構。

image-20220424144622823

Decorator 模式

嵌套裝飾。

image-20220424151650643 image-20220424151615062

重點在於裝飾物與被裝飾物具有一致性(具有相同的接口),裝飾物包裹被裝飾物後依舊可以調用接口,采用委托的形式實現了功能的疊加。

Visitor 模式

在 Visitor 中規定 visit 方法(可重載以拓展功能),在被訪問對象中定義 accept 方法,傳入 Visitor 實例調用其 visit 方法,達到將處理都集中在 Visitor 中的目的。

image-20220425113425853

Chain of Responsibility 模式

將多個對象組成一條職責鏈,按照順序一個一個地找出到底應該誰來負責處理。

image-20220425121448804

Facade 模式

image-20220427112001587

Mediator 模式


由 Mediator 創建和管理所有的 Colleague 組件,具體來說就是就是在每個 Colleague 中註冊 Mediator,在Mediator 中註冊每一個 Colleague ,保持兩者之間的通訊,在此基礎上,實現 Colleague 向 Mediator 報告每一次狀態變化,根據變化 Mediator 調用 Colleague 統一的接口實現不同的需求(該接口由各個 Colleague 實現類具體實現)。

image-20220427121204114

Observer 模式

具體的說,Observer 只是提供了對觀察對象的處理方法(該方法需要傳入觀察對象或需要的屬性),在每次觀察對象狀態變化時,由觀察對象自身在已註冊的Observer 中遍歷調用這一處理方法;這一角度看來 Observer 可以被看做只是數據處理方法的提供者,實現了數據自身與其的解耦。

image-20220427131455984

Memento 模式

在保存和恢復實例時保護對象的封裝性。

就是隔離快照和使用者的一種模式。(非常草率)

image-20220427141622252

State 模式

將復雜的 if-else 狀態判斷拆分成一個個表示狀態的 State 類,在Context 中直接調用 State 實例的方法,這些方法在不同的 State 中有不同的實現,State 實現類中也有切換狀態的方法,即切換成不同的 ConcreteState 。

image-20220427145643424

Flyweight 模式

通過共享實例減少 new 實例。

image-20220427165741159

Proxy 模式

代理模式。

image-20220427173555345

Command 模式

image-20220427181549634 image-20220427181612756

Interpreter 模式

image-20220428100403201