Breve descripción del modo de estrategia

Creo que es mejor leer el libro repetidamente para conocer los patrones de diseño. Recomiendo Head First y también leo esto (https://pan.baidu.com/s/1x0aiZHEz_UMa_fKa8QNWbg ---- njh1)

Bueno, no gracias.

La definición estándar es: el modelo de estrategia define la familia de algoritmos, que se encapsula por separado para que se puedan reemplazar entre sí. Este modelo hace que el cambio de algoritmo sea independiente de los clientes que lo utilizan.

En pocas palabras, hay varios algoritmos que se utilizan para decidir cuál usar.

El diagrama de clases es Jiangzi

el código se muestra a continuación:

package cn.bl.strategy;

/**
 * @Deacription 使用策略
 * @Author BarryLee
 * @Date 2019/9/22 16:21
 */
public class Main {
  public static void main(String[] args) {
    Context context = new Context();
    context.setStrategy(new ConcreteStrategyA());
    context.algorithm();

    context.setStrategy(new ConcreteStrategyB());
    context.algorithm();
  }
}
package cn.bl.strategy;

/**
 * 策略接口
 */
public interface Strategy {
  /**
   * 策略方法
   */
  void algorithm();
}
package cn.bl.strategy;

/**
 * @Deacription 环境类
 * @Author BarryLee
 * @Date 2019/9/22 16:21
 */
public class Context {

  // 策略是私有的
  private Strategy strategy;

  // 获取策略方法
  public Strategy getStrategy() {
    return strategy;
  }

  // 设置策略
  public void setStrategy(Strategy strategy) {
    this.strategy = strategy;
  }

  // 调用策略
  public void algorithm() {
    strategy.algorithm();
  }
}
package cn.bl.strategy;

/**
 * @Deacription 具体策略类A
 * @Author BarryLee
 * @Date 2019/9/22 16:21
 */
public class ConcreteStrategyA implements Strategy{
  @Override
  public void algorithm() {
    System.out.println("strategy A");
  }
}
package cn.bl.strategy;

/**
 * @Deacription 具体策略类B
 * @Author BarryLee
 * @Date 2019/9/22 16:22
 */
public class ConcreteStrategyB implements Strategy{
  @Override
  public void algorithm() {
    System.out.println("strategy B");
  }
}

 

Supongo que te gusta

Origin blog.csdn.net/qq_38238041/article/details/101162995
Recomendado
Clasificación