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

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

作者: 猫尾草 | 来源:发表于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