前言
稍后来补充,今天没时间了
代码
抽象接口(对修改封闭)
/**
* @author tangxuejun
* @version 2018/8/28 上午10:09
* 用策略模式实现计算器的基本运算
*/
public interface Strategy {
//抽象二元运算,两个入参,一个返回值
int calculate(int a, int b);
}
具体实现类(对新增开放)
/**
* @author tangxuejun
* @version 2018/8/28 上午10:11
* 加法运算
*/
public class Addtion implements Strategy {
@Override
public int calculate(int a, int b) {
return a + b;
}
}
/**
* @author tangxuejun
* @version 2018/8/28 上午10:13
* 减法运算
*/
public class subtraction implements Strategy{
@Override
public int calculate(int a, int b) {
return a - b;
}
}
计算结果和不同策略的注入
/**
* @author tangxuejun
* @version 2018/8/28 上午10:13
* 计算方法
*/
public class Calculate {
private Strategy strategy;
public Calculate(Strategy strategy) {
this.strategy = strategy;
}
public int getResult(int a, int b) {
return this.strategy.calculate(a, b);
}
}
测试方法
/**
* @author tangxuejun
* @version 2018/8/28 上午10:19
*/
public class TestCalculate {
@Test
public void fun1() {
//将加法策略传给计算器
Calculate add = new Calculate(new Addtion());
System.out.println(add.getResult(1, 2));
//将减法策略传给计算器
Calculate sub = new Calculate(new subtraction());
System.out.println(sub.getResult(3, 1));
}
}