在现实开发中,肯定会遇到这样一种情况,有几个业务场景,里面的大部分业务逻辑都一样,只有某些逻辑不同,而这些不同的逻辑又依赖于前面的逻辑,你会选择写重复代码去实现还是选择抽取公共方法,对那些不同的逻辑做单独处理?是不是理解起来比较抽象,简单就一句话,怎么把方法作为参数调用另一个方法,那就需要使用函数式接口了,最合适的莫过于@FunctionalInterface
注解 。
首先定义一个函数式接口,加上注解,定义一个方法和需要的参数
package com.zxh;@FunctionalInterface public interface MyFunction {void execute(int a, int b, String message); }
然后定义公共的方法,用于接收方法参数,来处理不同的逻辑
public static void dealwithData(Integer a, Integer b, String s, MyFunction method) {Integer pageCount = 3;for (int i = 1; i <= pageCount; i++) {method.execute(a, b, s);}}
例如上述,定义了一个方法,模拟分页去执行传入的方法的业务逻辑
在需要调用的地方传参进行自定义的逻辑
public static void add(Integer a, Integer b, String s){System.out.println(a + b + "-" + s);}public static void del(Integer a, Integer b, String s){System.out.println(a + "-" + b + "-" + s);}public static void main(String[] args) {//加法的场景dealwithData(1, 2, "hello", (a, b, s) -> {add(a, b, s);});//拼接的场景dealwithData(1, 2, "hello", (a, b, s) -> {del(a, b, s);});}
上述定义了两个方法(方法内的业务逻辑不同),然后在main方法的不同场景中调用不同的方法
那么就可以很好的实现方法的封装,减少代码的冗余。
必须要有公共方法封装的思想,提高代码的健壮性