策略模式把所研究的对象的算法包装在不同的策略对象里,策略对象改变计算的结果也会发生改变。
可以减少if else
public interface Math {double calculate(double a, double b);}public class Add implements Math {@Overridepublic double calculate(double a, double b) {return a + b;}}public class Multiply implements Math {@Overridepublic double calculate(double a, double b) {return a * b;}}// 创建contextpublic class StrategyContext {private Math math;public void setMath(Math math) {this.math = math;}public double getResult(double a, double b) {return math.calculate(a, b);}}
public class Main {public static void main(String[] args) {StrategyContext strategyContext = new StrategyContext();strategyContext.setMath(new Add());System.out.println(strategyContext.getResult(1,2));strategyContext.setMath(new Multiply());System.out.println(strategyContext.getResult(1,2));}}
