使用Lambda优化日志案例,解决性能浪费
**
这里我们简单的举一个日志案例来说明lambda这一功能
- 首先我们创建一个未优化的日志案例**
public class Demo01 {
public static void showLog(int level,String message){
//对日志等级进行判断,为1则输出message
if(level==1){
System.out.println(message);
}
}
public static void main(String[] args) {
String ms0="hellow";
String ms1=" are you";
String ms2=" ok";
showLog(1,ms0+ms1+ms2);
}
}
显然,我们可以看出这段代码存在着性能浪费问题:即无论showLog方法中if是否判定成功,传递的message参数总是先拼接好的,存在浪费。
- 然后我们对日志案例进行优化:
首先创建一个函数式接口(使用lambda的必须条件):
@FunctionalInterface//此注解能确保接口是函数式接口
public interface Messagebulider {
public abstract String buildmessage();
}
然后使用lambda配合函数式接口进行优化:
/*
使用lambda优化案例:
lambda的特点:延迟加载
使用lambda的条件:必须存在函数式接口
*/
public class Demo02 {
//创建showLog方法,参数传递Messagebuilder接口
public static void showLog(int level,Messagebulider ms){
if(level==1){
System.out.println(ms.buildmessage());
}
}
public static void main(String[] args) {
String ms0="hellow";
String ms1=" are you";
String ms2=" ok";
showLog(1,()->{
return (ms0+ms1+ms2);
});
}
}
这样,只有日志等级满足1时,才会调用Messagebuilder中的方法来进行字符串的拼接,解决了性能浪费问题。