Java8用Function来简洁代码

public class functionTest {
    public static void main(String[] args) {
        new Opt().f1("s");
        new Opt().f2("s");
        new Opt().f3("s");
    }
}
class Opt {
    private String commonF(String s, Function function) {
        // 共性代码10条
        System.out.println("start:"+s);
        String result = function.apply(s);
        System.out.println("end:"+s);
        // 共性代码20条
        System.out.println(result);
        return result;
    }
    public String f1(String s) {
        s = commonF(s, this::opt1);
        return s;
    }

    public String f2(String s) {
        s = commonF(s, this::opt2);
        return s;
    }
    public String f3(String s) {
        s = commonF(s, this::opt3);
        return s;
    }

    private String opt1(String s) {
        s+="1";
        return s;
    }
    private String opt2(String s) {
        s+="2";
        return s;
    }
    private String opt3(String s) {
        s+="3";
        return s;
    }
}

如果不简化,可能是如下这样的:

    public String f1(String s) {
        // 共性代码10条
        System.out.println("start:"+s);
        s = this.opt1(s);
        System.out.println("end:"+s);
        // 共性代码20条
        System.out.println(s);
        return s;
    }

    public String f2(String s) {
        // 共性代码10条
        System.out.println("start:"+s);
        s = this.opt2(s);
        System.out.println("end:"+s);
        // 共性代码20条
        System.out.println(s);
        return s;
    }
    public String f3(String s) {
        // 共性代码10条
        System.out.println("start:"+s);
        s = this.opt3(s);
        System.out.println("end:"+s);
        // 共性代码20条
        System.out.println(s);
        return s;
    }

既是是把 上面的共性代码封装成一个方法,下面的共性代码再封装一个方法,还是避免不了,会有 调用 封装后 的 方法 这行代码的重复编写;

你可能感兴趣的:(Java8用Function来简洁代码)