Behavioral
Memento — 不破壞封裝的快照與復原
Memento 模式以快照記錄物件狀態,在不暴露內部結構的前提下支援 undo/redo,Java record 是現代的輕量實作。
Interpreter — 為語言定義文法與解釋器
Interpreter 模式為簡單語法定義 AST 與解釋邏輯,適合小型 DSL;複雜語法請改用 ANTLR 等解析器工具。
Iterator — 迭代器模式
迭代器模式:提供統一介面循序存取集合元素,不暴露底層資料結構,Java Iterable/Iterator 即此模式的內建實作。
Visitor — 將演算法從物件結構抽離
訪問者模式透過雙分派將操作邏輯從物件結構抽離,適合在穩定的元素層級上頻繁新增操作
State — 讓物件隨狀態改變行為
State 模式將狀態相關行為封裝成獨立類別,消除大型 if-else/switch,物件轉換狀態時行為自動切換。
Command — 命令模式
命令模式:將請求封裝為物件,讓呼叫者與接收者解耦,並支援 undo/redo、排隊與日誌記錄。
Strategy — 策略模式
策略模式:定義一族可互換的演算法並各自封裝,讓演算法的變化獨立於使用它的客戶端,現代 Java 以 lambda 直接實現。
Observer — 一對多狀態變更通知
Observer 模式定義一對多依賴關係,Subject 狀態變更時自動通知所有訂閱者;Spring @EventListener 是現代首選實作。
Chain of Responsibility — 責任鏈模式
責任鏈模式:將請求沿處理者鏈傳遞,讓多個物件都有機會處理請求,避免發送者與接收者的強耦合。
Mediator — 以中介者解耦多方互動
Mediator 模式透過中介者集中管理物件間通訊,將網狀耦合降為星狀結構,Spring ApplicationEventPublisher 是其典型實踐。
Template Method — 模板方法模式
模板方法模式:在抽象父類定義演算法骨架,子類覆寫特定步驟而不改變整體流程,體現好萊塢原則。