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<String, String> 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;
    }

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容