什么是策略模式?
策略模式的本质是面向接口编程。它抽象的是不同的算法或策略,让算法的变化独立于使用它的客户端。
举个简单的例子:税收计算。个税和企业税属于不同的算法,也就是不同的策略。如果未来新增其他税种,我们不需要修改核心逻辑,只需增加新的策略类即可。
利用接口实现策略模式
在 C# 中,我们可以定义一个接口来规范策略行为。这样无论未来出现何种算法,只要实现该接口,主模块就能保持稳定。
// 抽象税收算法接口
public interface ITaxStrategy
{
double Calculate(double income);
}
// 个税策略
public class TaxPerson : ITaxStrategy
{
public double Calculate(double income)
{
return income * 0.1;
}
}
// 企业税策略
public class TaxEnterprise : ITaxStrategy
{
public double Calculate(double income)
{
return income * 0.3;
}
}
接下来是管理器和调用部分。这里利用构造函数注入策略实例,降低耦合度。
public class TaxManager
{
private readonly ITaxStrategy _taxStrategy;
// 通过构造函数执行依赖注入
public TaxManager()
{
_taxStrategy = taxStrategy;
}
{
_taxStrategy.Calculate(income);
}
}
{
{
ITaxStrategy strategy = TaxPerson();
TaxManager manager = TaxManager(strategy);
result = manager.GetTax();
}
}

