函数式编程的好处
Java引入了函数式编程,这表示Java从此不在是一个单纯的面向对象语言,现在他同时混合了函数式编程。这是巨大的改变,需要我们调整面对对象的编程习惯,以适应这些变化。
但是为什么我们需要去适应这些改变?为什么我们需要花费时间精力上手函数式编程而不是直接用面对对象解决问题?
- 函数式编程的引入,帮助我们减少业务逻辑和代码的分歧。他允许我们在更高层次更自然的描述业务逻辑。让代码直接描述“你想做什么”,而不是“你想怎样去做”。
- 许多样板(boilerplates)可以被移除,这会让代码更清晰更简洁。
- 高阶函数(Higher-order functions)允许我们:
- 发送方法到其他方法中。
- 在其他方法中创建方法。
- 从其他方法中返回方法。
这对Java来说是一个巨大的胜利,我们需要发送,创建并返回对象来完成这项工作。我们将能创建更健壮,更集中并且更容易重用的代码。
Lambda表达式
lambda表达式的格式
格式:(形式参数) - > {代码块}
形式参数:如果有多个参数,参数之间用逗号隔开;如果没有参数,留空即可
->:由英文中画线和大于符号组成,固定写法。代表执行动作
代码块:是我们具体要做的事情,也就是以前我们写的方法体内容
- 多亏lambda表达式,现在我们可以实现惰性求值(lazy evalutions)。当发送lambda表达式作为一个方法的参数,Java编译器会在lambda表达式在方法中被调用时才计算他的值。这跟一般的方法参数被直接求职是不一样的。
- lambda让单元测试变得更加有趣~他允许我们创建简洁,小巧和快速的轻量级单元测试。用lambda我们能够储存测试代码。他允许我们测试各种场景对代码的影响。
- 探索新的模式。
- 等等好处。
举例:
//定义一个Consumer对象,传统的方式是这样定义的:
Consumer c = new Consumer(){
@Override
public void accept(object o){
System.out.println(o);
}
}
//而我们用函数式编程接口可以这样定义:
Consumer c =(o) -> {
System.out.println(o);
}
//当函数体中只有一个语句时,可以去掉{}进一步简化:
Consumer c = (o) -> System.out.println(o);
//由于此处只是进行打印,调用了System.out中的println静态方法对输入参数直接进行打印,因此可以简化成以下写法:
Consumer c =System.out::println;
更多推荐
java函数式编程的好处
发布评论