美文网首页工作生活
多个方法形成调用链的合理结构

多个方法形成调用链的合理结构

作者: 猫尾草 | 来源:发表于2019-07-03 09:48 被阅读0次

公司的一个半老存储项目,之前是以web形式提供服务的,现在要增加一个SDK调用方式,两者共用数据库,只是接口不太一样,所以在新增controller时要求尽量复用原来的Service系列方法。这时发现了一个问题。
方法调用链上,老代码很多是这样操作的:

public class Test {
    public static void main(String[] args) {
        String res = firstFunction("hhhhhhh");
        System.out.println(res);
    }
    public static String firstFunction(String firstParam) {
        // action
        String processFirst = firstParam + ":processDone ";
        return secondFunction(processFirst);
    }
    public static String secondFunction(String secondParam) {
        // action
        String processSecond = secondParam + ":processDone ";
        return thirdFunction(processSecond);
    }
    public static String thirdFunction(String thirdParam) {
        // action
        String processThird = thirdParam + ":processDone ";
        return processThird;
    }
}

咋看可能并不觉得有什么问题。但是假如我现在新的controller在处理同样数据时,因为返回数据的差异,在thirdFunction不再返回String类型数据,而是Integer,那么调用链上的所有方法都得修改return为Integer,但是这样又破坏了原有controller对这些方法的使用;假如现在只要firstFunction和secondFunction方法,已经处理完,不需要执行thirdFunction方法,那么secondFunction的return thirdFunction(processSecond);就有问题了。这种调用链不是一种好方法。改成下面这样比较好:

public class Test2 {
    public static void main(String[] args) {
        String res1 = firstFunction("hhhhhhh");
        String res2 = secondFunction(res1);
        String res3 = thirdFunction(res2);
        System.out.println(res3);
    }
    public static String firstFunction(String firstParam) {
        // action
        String processFirst = firstParam + ":processDone ";
        return processFirst;
    }
    public static String secondFunction(String secondParam) {
        // action
        String processSecond = secondParam + ":processDone ";
        return processSecond;
    }
    public static String thirdFunction(String thirdParam) {
        // action
        String processThird = thirdParam + ":processDone ";
        return processThird;
    }
}

每个方法都可以独立修改,就不存在上面的问题了。

相关文章

网友评论

    本文标题:多个方法形成调用链的合理结构

    本文链接:https://www.haomeiwen.com/subject/wctlhctx.html