策略模式是一种行为型设计模式,它允许在运行时选择算法的行为。通过将算法封装在独立的策略类中,客户端可以根据需要动态地切换算法,而无需修改使用算法的代码。
策略模式由三个主要组件组成:
假设我们正在开发一个电商平台,我们需要为用户提供多种支付方式,例如支付宝、微信支付和银行卡支付。我们希望能够根据用户的选择,动态地选择不同的支付方式进行支付。
首先,我们创建一个策略接口IPaymentStrategy
,它定义了支付的通用方法:
C#public interface IPaymentStrategy
{
void Pay(double amount);
}
然后,我们创建三个具体策略类,分别实现了不同的支付方式:
C#public class AlipayStrategy : IPaymentStrategy
{
public void Pay(double amount)
{
Console.WriteLine($"Using Alipay to pay {amount} dollars.");
}
}
public class WeChatPayStrategy : IPaymentStrategy
{
public void Pay(double amount)
{
Console.WriteLine($"Using WeChat Pay to pay {amount} dollars.");
}
}
public class BankCardStrategy : IPaymentStrategy
{
public void Pay(double amount)
{
Console.WriteLine($"Using Bank Card to pay {amount} dollars.");
}
}
接下来,我们创建一个环境类PaymentContext
,它持有一个策略对象,并在需要时调用策略对象的方法:
C#public class PaymentContext
{
private IPaymentStrategy _paymentStrategy;
public void SetPaymentStrategy(IPaymentStrategy paymentStrategy)
{
_paymentStrategy = paymentStrategy;
}
public void Pay(double amount)
{
_paymentStrategy.Pay(amount);
}
}
现在,我们可以在客户端代码中使用策略模式来选择支付方式:
C#static void Main(string[] args)
{
var paymentContext = new PaymentContext();
paymentContext.SetPaymentStrategy(new AlipayStrategy());
paymentContext.Pay(100.0);
paymentContext.SetPaymentStrategy(new WeChatPayStrategy());
paymentContext.Pay(200.0);
paymentContext.SetPaymentStrategy(new BankCardStrategy());
paymentContext.Pay(300.0);
}
通过使用策略模式,我们可以根据需要动态地选择不同的支付方式,而无需修改客户端代码。策略模式可以用于各种场景,例如排序算法、日志记录等。希望本文对你理解策略模式有所帮助。
本文作者:技术老小子
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!