#

DesignPattern

標籤 · 22 篇文章

Memento — 不破壞封裝的快照與復原

Memento 模式以快照記錄物件狀態,在不暴露內部結構的前提下支援 undo/redo,Java record 是現代的輕量實作。

·
#DesignPattern #Behavioral #Memento

Interpreter — 為語言定義文法與解釋器

Interpreter 模式為簡單語法定義 AST 與解釋邏輯,適合小型 DSL;複雜語法請改用 ANTLR 等解析器工具。

·
#DesignPattern #Behavioral #Interpreter

Iterator — 迭代器模式

迭代器模式:提供統一介面循序存取集合元素,不暴露底層資料結構,Java Iterable/Iterator 即此模式的內建實作。

·
#DesignPattern #Behavioral #Iterator

Visitor — 將演算法從物件結構抽離

訪問者模式透過雙分派將操作邏輯從物件結構抽離,適合在穩定的元素層級上頻繁新增操作

·
#DesignPattern #Behavioral #Visitor

State — 讓物件隨狀態改變行為

State 模式將狀態相關行為封裝成獨立類別,消除大型 if-else/switch,物件轉換狀態時行為自動切換。

·
#DesignPattern #Behavioral #State

Command — 命令模式

命令模式:將請求封裝為物件,讓呼叫者與接收者解耦,並支援 undo/redo、排隊與日誌記錄。

·
#DesignPattern #Behavioral #Command

Strategy — 策略模式

策略模式:定義一族可互換的演算法並各自封裝,讓演算法的變化獨立於使用它的客戶端,現代 Java 以 lambda 直接實現。

·
#DesignPattern #Behavioral #Strategy

Observer — 一對多狀態變更通知

Observer 模式定義一對多依賴關係,Subject 狀態變更時自動通知所有訂閱者;Spring @EventListener 是現代首選實作。

·
#DesignPattern #Behavioral #Observer

Chain of Responsibility — 責任鏈模式

責任鏈模式:將請求沿處理者鏈傳遞,讓多個物件都有機會處理請求,避免發送者與接收者的強耦合。

·
#DesignPattern #Behavioral #ChainOfResponsibility

Mediator — 以中介者解耦多方互動

Mediator 模式透過中介者集中管理物件間通訊,將網狀耦合降為星狀結構,Spring ApplicationEventPublisher 是其典型實踐。

·
#DesignPattern #Behavioral #Mediator

Template Method — 模板方法模式

模板方法模式:在抽象父類定義演算法骨架,子類覆寫特定步驟而不改變整體流程,體現好萊塢原則。

·
#DesignPattern #Behavioral #TemplateMethod

Decorator — 動態疊加行為

Decorator 模式在不修改原始類別的前提下,透過包裝物件動態疊加行為,避免繼承導致的類別爆炸。

·
#DesignPattern #Structural #Decorator

Bridge — 抽象與實作分離

Bridge 模式將抽象層與實作層分離,讓兩者可以獨立演進,解決多維度繼承導致的類別爆炸問題。

·
#DesignPattern #Structural #Bridge

Facade — 子系統統一入口

Facade 模式為複雜子系統提供簡化的統一介面,降低客戶端與子系統的耦合,Spring Service 層即其典型應用。

·
#DesignPattern #Structural #Facade

Flyweight — 共享內部狀態節省記憶體

Flyweight 模式透過共享內部狀態降低大量相似物件的記憶體開銷,適用於字元渲染、粒子系統等場景。

·
#DesignPattern #Structural #Flyweight

Proxy — 控制物件存取的代理層

代理模式在不改變介面的情況下攔截對物件的存取,是 Spring AOP、JDK 動態代理、CGLIB 的底層機制

·
#DesignPattern #Structural #Proxy

Composite — 樹狀結構統一操作

Composite 模式讓客戶端以一致方式處理單個物件與物件組合,適合樹狀結構如目錄、組織圖、UI 元件。

·
#DesignPattern #Structural #Composite

Adapter — 介面轉換橋接

Adapter 模式將不相容的介面轉換為客戶端期望的介面,常用於整合第三方 SDK 與遺留系統。

·
#DesignPattern #Structural #Adapter

Prototype — 透過複製建立新物件

GoF Prototype 模式:比較淺拷貝與深拷貝的陷阱,說明為何應避免 Cloneable,以及拷貝建構子與 Jackson 序列化的現代替代方案

·
#DesignPattern #Creational #Prototype

Builder — 分離複雜物件的建構與表示

GoF Builder 模式:用流式介面解決 telescoping constructor 問題,比較 Lombok @Builder 底層實作與 Java Records 的適用邊界

·
#DesignPattern #Creational #Builder

Factory Method — 讓子類決定實例化哪個類別

GoF Factory Method 模式:定義建立物件的介面,將具體類別的決策交給子類,並釐清與 Simple Factory、Abstract Factory、靜態工廠的差異

·
#DesignPattern #Creational #FactoryMethod

Singleton — 確保唯一實例

GoF Singleton 模式四種實作比較:Enum、Holder、DCL、Eager,說明 Spring Bean Singleton 與 GoF 的本質差異

·
#DesignPattern #Creational #Singleton