選單
GSS 技術部落格
在這個園地裡我們將從技術、專案管理、客戶對談面和大家分享我們多年的經驗,希望大家不管是喜歡或是有意見,都可以回饋給我們,讓我們有機會和大家對話並一起成長!
若有任何問題請來信:gss_crm@gss.com.tw
3 分鐘閱讀時間 (542 個字)

策略模式實務應用

S5levvx

 策略模式簡介 

  • 定義一系列的演算法,並把演算法介面封裝到有介面中,讓不同演算法可以各自實作介面 。
  • 可根據需求快速替換演算法。
  • 容易擴充新的演算法。
  • 易產生許多實作類別。

 策略模式結合其他 Design Pattern

  • 若只使用策略模式,當遇到不同策略間有共通流程時,容易造成重複程式碼。

 不同策略間有共通流程時,可以結合 Template Method

  • 各個 Strategy 只需要實作自己的部份。

 不同策略間有共通流程,但又沒那麼一致時,若套用 Template Method,則會產生技術債

  • 抽象層若有提供流程方法,但實體用不到時,通常會繼承並放空。
  • 抽象層若無提供流程方法,但實體需要時,通常會繼承並加工。
  • 後續調整抽象層時,很容易忘記調整實作層的內容。
  • 額外抽抽象層出來似乎也不太對…
  • 抽象層數量爆炸,可以共用的內容又少。
  • 抽象層彼此有些重複程式碼。

 不同策略間有共通流程,但又沒那麼一致時,可以用委派(Delegate)取代繼承(Inheritance)

  • 實作內容委派處理。
  • 各個 Strategy 根據需求、流程自行組合。

 策略模式 in QuEyeCIA

  • 目前 QuEyeCIA 的 Strategy 類別約有五十幾個
  • 但是系統上可選擇的分析工具只有十幾個,其他的 Strategy 呢?

 QuEyeCIA 中一般的策略模式應用

  • 使用 Template Method 整併流程。
  • 各個解析 Strategy 只需要實作自己的部份。
  • 擴充困難,需要配合原先流程。

 QuEyeCIA 中不良的策略模式應用

  • 繼承多層,層層耦合。
  • 難以擴充新的 Strategy。

 QuEyeCIA 中以委派方式使用策略模式

  • 擴充容易,可以各自組合所需。
  • 不怕改 A 壞 B。
  • 容易針對實作邏輯測試。
如何在 LINE 使用免費的推播服務
心靈成長-"原子習慣"摘要分享 #前篇

相關文章

 

評論

尚無評論
已經注冊了? 這裡登入
Guest
2025/06/09, 週一

Captcha 圖像