栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java 方法作为参数传递 优化代码

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java 方法作为参数传递 优化代码

假如说现在有一个需求要调用不同的接口,调用接口前后有些相同的工作要处理,如调用前的校验,调用后的处理结果判断,然后把获取到的数据写入各自的表,假如现在有3个接口
伪代码如图:

可以看到里面关键代码在于两个接口的调用,todo部分都是相同逻辑的重复代码,如下所示,如果把两个方法作为参数传递,便可以把三个接口抽取为一个

对于这个方法抽取,在某些支持函数式编程的语言里可以直接通过方法签名和返回值类型去定义函数类型的参数,比如在scala中可以这样定义:

def fun(name:String, m:(String)=>String, i:(String)={}

java中没法这么搞,所以java8提供了函数式接口,这里可以抽取出一个类似的方法。前一个方法有一个入参和一个返回值,所以用Function类型的函数式接口定义,后一个接口只有入参没有返回值,所以用Consumer定义:

    void getAndSave(String name, Function function, Consumer consumer) {
        //todo
        String apply = function.apply(name);
        //todo
        consumer.accept(apply);
    }

前后对比一下:

函数式调用:

        getAndSave(name,(String parm)-> methodA(parm),(String parm) -> dao.insertA(parm));
        getAndSave(name,(String parm)-> methodB(parm),(String parm) -> dao.insertB(parm));
        getAndSave(name,(String parm)-> methodC(parm),(String parm) -> dao.insertC(parm));
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/980829.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号