首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 設計模式實戰:Strategy 策略模式完整解析(二)

     編輯:關於C語言

程式碼執行結果

策略模式執行結果

代碼角色詳細說明

  • Data:Context(環境/上下文),持有策略參考,提供 SetShowDataStrategy 切換
  • ShowDataStrategy:Strategy(抽象策略),定義共同介面
  • ShowAllData / ShowPagedData / SearchData:ConcreteStrategy(具體策略)
  • Client 在執行期決定策略,Context 可提供預設策略

模式優勢體現

  • Context 複雜度大幅降低(移除 if-else 鏈)
  • 新增顯示方式只需新增 ConcreteStrategy,Context 零修改
  • 可復用邏輯可上移至 Abstract Strategy

採用時機

  • 代碼層面:類別有多種行為,內部用條件語句實現
  • 應用層面:系統需從多種演算法選一,透過統一介面取得輸出

實現要點

  • Context 持有 Strategy 實例
  • Strategy 需要 Context 資料時:Context 傳資料給 Strategy(避免雙向耦合)
  • Client 未提供策略時,Context 可內建預設策略

資料傳遞兩種方式比較

方式優點缺點
Context 傳資料給 Strategy低耦合,Strategy 可獨立測試可能傳遞不必要資料
Context 傳自己給 StrategyStrategy 可取用所有 Context 狀態緊密耦合,Strategy 依賴 Context 具體類別

注意事項

  • Client 需了解具體策略才能選擇,僅在 Client 能做選擇時使用
  • 策略物件過多增加負擔 → 考慮 Flyweight:策略實作為無狀態享元,額外狀態由 Context 管理
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved