java8的函数式编程使得代码非常简洁,而且可读性良好,很有写脚本的感觉。写多了用回低版本的java都感觉不太适应。这里举一个使用函数式接口和枚举实现策略模式的例子
public class Test {
private Operate operate;
@org.junit.Test
public void test() {
setOperate(OperateImpl.ADD);
Optional.ofNullable(operate.operate(1, 2))
.ifPresent(System.out :: println);
setOperate(OperateImpl.SUB);
Optional.ofNullable(operate.operate(1, 2))
.ifPresent(System.out :: println);
}
public interface Operate{
float operate(float x, float y);
}
public enum OperateImpl implements Operate{
ADD((x,y)->{return x+y;}),
SUB((x,y)->{return x-y;});
private BinaryOperator<Float> operator;
OperateImpl(BinaryOperator<Float> operator) {
this.operator = operator;
}
@Override
public float operate(float x, float y) {
return this.operator.apply(x, y);
}
}
public Operate getOperate() {
return operate;
}
public void setOperate(Operate operate) {
this.operate = operate;
}
}