策略模式是一种定义一系列算法的方法,所有算法完成的都是相同的工作,只是实现不同,所以可以以相同的方式调用所有的算法,减少各种算法类与使用算法类之间的耦合。
算法公共接口类
public interface ComputeStrategy<T extends Number> {
T getResult();
}
实现类1
public class AddStrategy implements ComputeStrategy<Number>{
private Number number1;
private Number number2;
public AddStrategy(Number number1, Number number2) {
this.number1 = number1;
this.number2 = number2;
}
@Override
public Number getResult() {
return number1.doubleValue() + number2.doubleValue();
}
}
实现类2
public class SubStrategy implements ComputeStrategy<Number> {
private Number number1;
private Number number2;
public SubStrategy(Number number1, Number number2) {
this.number1 = number1;
this.number2 = number2;
}
@Override
public Number getResult() {
return number1.doubleValue() - number2.doubleValue();
}
}
运行类
public class BaseMain {
private ComputeStrategy strategy;
public BaseMain(ComputeStrategy strategy) {
this.strategy = strategy;
}
public void setStrategy(ComputeStrategy strategy) {
this.strategy = strategy;
}
public Number getResult(){
return strategy.getResult();
}
public static void main(String[] args) {
BaseMain baseMain = new BaseMain(new AddStrategy(1, 2));
System.out.println(baseMain.getResult());
baseMain.setStrategy(new SubStrategy(5,1));
System.out.println(baseMain.getResult());
}
}