系列簡介
本系列採用「類別圖 + 實際代碼範例」的方式,系統性介紹 GoF 23 種經典設計模式在 C# 中的實作。每篇文章包含模式意圖、結構圖、核心角色、完整可執行代碼、執行結果與適用場景分析,適合從入門到進階的開發者參考。
創建型模式
- 抽象工廠模式 - 提供創建相關物件族的介面,無需指定具體類別。
- 建造者模式 - 將複雜物件的建構與表示分離,相同建構流程可創建不同表示。
- 原型模式 - 透過複製原型實例創建新物件,區分淺層與深層複製。
- 工廠方法模式 - 定義創建物件介面,由子類決定實例化哪個類別。
- 單例模式 - 確保類別只有一個實例,並提供全域存取點。
結構型模式
- 適配器模式 - 將類別介面轉換為客戶期望的另一介面,解決不相容問題。
- 橋接模式 - 將抽象與實現分離,使兩者可獨立變化。
- 組合模式 - 將物件組合成樹狀結構,表現「部分-整體」層次。
- 裝飾模式 - 動態給物件添加職責,比繼承更靈活擴充功能。
- 外觀模式 - 為子系統提供一致介面,簡化客戶端使用。
- 享元模式 - 運用共享技術有效支援大量細粒度物件。
- 代理模式 - 為其他物件提供代理以控制存取。
行為型模式
- 責任鏈模式 - 將請求傳遞給鏈中多個物件,直到有物件處理為止。
- 命令模式 - 將請求封裝為物件,支援參數化、佇列、日誌、撤銷操作。
- 解釋器模式 - 定義語言文法表示與解釋器,解釋語言句子。
- 迭代器模式 - 提供順序存取聚合物件元素的方法,不暴露內部結構。
- 中介者模式 - 用中介物件封裝一系列物件互動,降低耦合度。
- 備忘錄模式 - 在不破壞封裝下捕獲物件內部狀態並外部化儲存。
- 觀察者模式 - 定義一對多依賴,狀態改變時自動通知更新。
- 狀態模式 - 允許物件在內部狀態改變時改變行為,彷彿修改了類別。
- 策略模式 - 定義算法族,封裝並使其可互換,算法變化獨立於客戶端。
- 模板方法模式 - 定義算法骨架,將步驟延遲到子類實作。
- 訪問者模式 - 在不改變元素類別前提下,定義作用於元素的新操作。
其他實用模式
- 提供者模式 - 為 API 定義與實作分離,ASP.NET 核心架構廣泛採用。
學習建議
- 先理解模式的「意圖」與「適用場景」,而非死記代碼結構。
- 實際動手執行代碼,觀察執行流程與結果。
- 嘗試在專案中識別可應用模式的情境,逐步重構。
- 注意模式並非銀彈,過度使用會增加複雜度,需權衡取捨。
配套資源
本系列所有範例代碼已整理打包,可從文章末尾連結下載完整 Visual Studio 專案。
本索引持續更新中,歡迎收藏追蹤最新文章。