策略模式(Stragety Pattern)

1.定义

策略模式是一种行为设计模式, 它能让你定义一系列算法, 并将每种算法分别放入独立的类中, 以使算法的对象能够相互替换。

2.结构

在这里插入图片描述

  • 上下文 (Context) :维护指向具体策略的引用, 且仅通过策略接口与该对象进行交流
  • 策略 (Strategy) : 接口是所有具体策略的通用接口, 它声明了一个上下文用于执行策略的方法
  • 具体策略 (Concrete Strategies) : 实现了上下文所用算法的各种不同变体
  • 客户端 (Client) : 会创建一个特定策略对象并将其传递给上下文。 上下文则会提供一个设置器以便客户端在运行时替换相关联的策略

3.代码实现

实现一个计算策略:

  • 策略类接口(Strategy):
// 计算策略
public interface IConcreteStragety
{
   
    
    
    double Execute(double a, double b);
}
  • 具体策略类(Concrete Strategies):
// 加法策略
public class ConcreteStrategyAdd : IConcreteStragety
{
   
    
    
    public double