創建型模式(5 種)
| 模式 | 核心比喻 | 關鍵意圖 |
| Factory Method / Abstract Factory | 人才市場:不用自找,去市場挑 | 封裝物件創建,解耦使用與建構 |
| Builder | 生產流水線:標準構造 → 分件生產 → 組裝 | 分步建構複雜物件,同一流程產出不同表示 |
| Prototype | 印刷術:複製品與原件一模一樣 | 透過克隆創建新物件,避免繁瑣初始化 |
| Singleton | 商標保護法:全球唯一授權 | 確保類只有一個實例,提供全域訪問點 |
結構型模式(7 種)
| 模式 | 核心比喻 | 關鍵意圖 |
| Adapter | 拜雙師:既會太極又會金剛掌 | 將介面轉換為客戶期望的另一介面 |
| Decorator | 青出於藍:師傅教太極,徒弟再加蒙古摔跤 | 動態給物件添加職責,靈活替代繼承 |
| Bridge | 白馬非馬:顏色×性別×馬 = 靈活組合 | 抽象與實現分離,雙向獨立擴展 |
| Composite | 大家族:子生孫、孫生子、按輩分樹狀 | 部分-整體樹狀結構,統一葉子與容器介面 |
| Facade | 九年義務教育:博士也讀、高中生也讀 | 為子系統提供統一高層介面,降低耦合 |
| Flyweight | 認識三千漢字:一勞永逸應付讀寫 | 共享細粒度物件,節省記憶體 |
| Proxy | 垂簾聽政:皇帝不直接理政,由大臣代理 | 為真實物件提供代理,控制訪問 |
行為型模式(11 種)
| 模式 | 核心比喻 | 關鍵意圖 |
| Chain of Responsibility | 租房找中介:不滿意換下一家,直到滿意 | 請求沿鏈傳遞,每節點可處理或轉發 |
| Command | 借刀殺人:不親自動手,挑撥他人執行 | 將請求封裝為物件,支援排隊、撤銷、日誌 |
| Interpreter | 文言文注釋:翻譯成白話文 | 定義語言文法並實現解釋器 |
| Iterator | 趕盡殺絕:逐個搜索、不漏一個 | 順序訪問聚合元素,不暴露內部結構 |
| Mediator | 三角債引入中介:雙邊變多邊對中介 | 封裝物件互動,降低多對多耦合 |
| Memento | 有福同享:我有多少,你就有多少 | 捕獲物件內部狀態,支援撤銷/恢復 |
| Observer | 看守者:被看守者異動 → 即時反應 | 一對多依賴,狀態變更自動通知觀察者 |
| State | 門衛把關:亂進亂出 → 規範進出 | 物件行為隨內部狀態改變而改變 |
| Strategy | 久病成良醫:長期摸索總結出感冒/肺病/肝炎方案 | 定義算法族,封裝並可互換 |
| Template Method | 教練不必會游泳:學生會就行 | 定義算法骨架,子類實現具體步驟 |
| Visitor | 依法治罪:殺人死刑、偷竊罰款、條例固定 | 分離演算法與物件結構,新增操作不改類 |
記憶口訣
創建五:工廠建造原型單
結構七:適配裝飾橋組合,外觀享元代理全
行為十一:責任鏈命令解釋迭代,中介備忘觀察狀態,策略模板訪問者
實戰提示
- 模式非銀彈,解決特定問題時才引入
- 多模式常組合使用(如 Factory + Strategy、Decorator + Proxy)
- 現代語言特性(Lambda、模組系統、依賴注入)簡化了部分模式實現
- 理解意圖勝過背誦結構