Java8函数式编程入门 互动版

策略模式

策略模式能在运行时改变程序的算法行为。

query

例子:定义一个策略接口,计算2个数。根据不同实现算法,可以进行四则运算(完整代码见右边代码区)。

public class Test {

    public static void main(String[] args) {
        Context context = new Context(new OperationAdd());
        System.out.println("1 + 1 = " + context.calculate(1,1));
        context = new Context(new OperationSubstract());
        System.out.println("1 - 1 = " +context.calculate(1,1));
    }

}

使用Lambda表达式或者方法引用可以去掉样板代码。在这里可以去掉具体的策略实现。

Context context = new Context((x,y)-> x + y);
System.out.println(context.calculate(1,1));

输出结果:

query

用Lambda表达式改写例子,实现减法,乘法,除法运算。