🎯 什麼情境該想到我
當某部分需求「經常改」、每次一改就要動很多地方,想把變化隔離起來時。這是所有設計模式的共同本質。
⚙️ 怎麼用
- 找出「會變」與「不變」的部分:把兩者分開。
- 把會變的部分抽成獨立元件(介面 + 可替換實作),讓不變的部分依賴抽象。
- 未來需求變動只需新增/替換那個元件,不動其餘(呼應 工具-開閉原則)。
例:付款方式會變 → 抽出 PaymentMethod 介面,新增付款方式=加一個實作。
🧪 我實際套用的紀錄
- 2026-07-14:(待填)
⚠️ 注意
- 只封裝「真的會變」的點;對不會變的東西加彈性=過度設計、徒增複雜度。
🔗 相關工具
- 工具-針對介面編程 —— 封裝變化的落地方式,把會變的部分藏到介面後面
- 工具-優先組合而非繼承 —— 組裝方式,用組合替換變化的部分比用繼承覆寫更好抽換
- 工具-管理複雜度 —— 上位準則,封裝變化本質上是在降低要同時記住的東西