我们学习Java8的lambda的时候一开始都会接触这样子的代码,这样子可以使我们的代码更简洁。
public static void main(String[] args) {
// old
Calculator<Integer> add = new Add();
add.calculate(1, 2);
// lambda
Calculator<Integer> minus = (a, b) -> {
return a - b;
};
minus.calculate(1, 2);
}
static class Add implements Calculator<Integer> {
@Override
public Integer calculate(Integer t1, Integer t2) {
return t1 + t2;
}
}
实现策略模式呢,是创建不同的实现类,封装不同的方法,使得这些实现可以相互替换。这里我们可以通过传进一个函数代替以前的实现类来实现策略模式
public int service(int a, int b) {
return this.cal(this::add, a, b);
}
public int add(int a, int b) {
return a + b;
}
public int minus(int a, int b) {
return a - b;
}
public <T> T cal(Calculator<T> cal, T t1, T t2) {
T result = cal.calculate(t1, t2);
return result;
}