程式設計模式 - 策略模式 (Strategy Pattern)
定義:
一種軟體設計模式,指對象有某個行爲,但是在不同的場景中,該行爲有不同的實現算法。比如每個人都要「交個人所得稅」,但是「在美國交個人所得稅」和「在中華民國交個人所得稅」就有不同的算稅方法。
策略模式:
- 定義了一族算法(業務規則);
- 封裝了每個算法;
- 這族的算法可互換代替(interchangeable)。
範例:
// 所得稅計算策略
public interface ITaxStragety
{
double CalculateTax(double income);
}
// 個人所得稅
public class PersonalTaxStrategy : ITaxStragety
{
public double CalculateTax(double income)
{
return income * 0.12;
}
}
// 企業所得稅
public class EnterpriseTaxStrategy : ITaxStragety
{
public double CalculateTax(double income)
{
return (income - 3500) > 0 ? (income - 3500) * 0.045 : 0.0;
}
}
public class InterestOperation
{
private ITaxStragety m_strategy;
public InterestOperation(ITaxStragety strategy)
{
this.m_strategy = strategy;
}
public double GetTax(double income)
{
return m_strategy.CalculateTax(income);
}
}
//執行:
// 個人所得稅方式
InterestOperation operation = new InterestOperation(new PersonalTaxStrategy());
Console.WriteLine("個人支付的稅為:{0}", operation.GetTax(5000.00));
// 企業所得稅
operation = new InterestOperation(new EnterpriseTaxStrategy());
Console.WriteLine("企業支付的稅為:{0}", operation.GetTax(50000.00));
Console.Read();
參考資料:
https://www.796t.com/article.php?id=229223
https://zh.wikipedia.org/wiki/%E7%AD%96%E7%95%A5%E6%A8%A1%E5%BC%8F
留言
張貼留言