C# Design Pattern

C# 策略模式 (Strategy)

施明竹 2019/11/20 18:12:31
2628

C# 策略模式 (Strategy)

 

前言

由於專案上有用到一些計算方式。

所以用一個簡單的Demo專案,來介紹下原理及實做。

 

何謂策略模式

維基的定義:

策略模式作爲一種軟體設計模式,指對象有某個行爲,但是在不同的場景中,該行爲有不同的實現算法。比如每個人都要「交個人所得稅」,但是「在美國交個人所得稅」和「在中國交個人所得稅」就有不同的算稅方法。

 

策略模式:

·         定義了一族算法(業務規則);

·         封裝了每個算法;

·         這族的算法可互換代替(interchangeable)。

 

這裡,用更簡單的計算機方式來說明。

 

1、 建立介面IStrategy.cs

2、 建立服務:Strategy.cs,實做加、減、乘、除

加法:

減法:

 

乘法:

 

除法:

3、 用簡單工廠模式,建立 class Calculator


這裡建立了一個enum DoType


4、 利用NUnitTest單元測試,來驗證所寫的程式是否有效

驗證加法:


 

驗證減法:


 

驗證乘法:


 

驗證除法:


 

5、 執行測試,測試結果如下圖


 

由此可證策略模式是的確可行,並能應用在專案中。

自然,專案中用的算式更複雜,這個Demo只是為了讓工程師們能更快的理解程式是為何要這樣設計的。

 

GitHubhttps://github.com/pceagle1/StrategyDemo

 

參考資料:

維基:https://zh.wikipedia.org/wiki/%E7%AD%96%E7%95%A5%E6%A8%A1%E5%BC%8F

 

施明竹