根据接口文档撸代码的心得

来源:互联网 发布:淘宝有虚拟试衣功能吗 编辑:程序博客网 时间:2024/05/19 23:09
需求:在现有的web项目调用设备的接口来操控设备分析过程:                文档的接口很多大概一两百,每个接口的参数个数不统一,有些是post,有些是get如果像这样:public String methodA(String arg1,String arg2 ...){       httpClientUtil.post(...);}public String methodB(String arg1,String arg2 ,String arg3...){       httpClientUtil.get(...);} 势必会很乱(其实我刚开始就是这么搞的),细看会发现这些接口还是有很多共同点的于是改为:public String methodA(String jsonParameters,String postORget){       httpClientUtil.service(postORget   ,   ...);}public String methodB(String jsonParameters,String postORget){       httpClientUtil.service(postORget   ,   ...);}于是方法都统一了,其实很简单就是把所有参数都封装到一个json字符串中,另外提供一个判断是post或get的标志httpClientUtil.service(postORget   ,   ...)会根据标志调用post或get貌似service层已经很简洁了,可是controller层还有问题因为每次调用service的方法都会在之前和之后执行一样的操作public String doXXX(String ...){     ......    if(xxx){          a1();          result=service.methodA();          a2();      }       return result;}如果不嫌麻烦这样写没问题,但是对于有洁癖的程序员是不能容忍的这次完全可以模仿刚才统一post和get一样,但是之前只有两个,现在有两百个,当然不能再用枚举去得到方法于是想到Java反射机制:public String doYYY(String methodName,String args,..){    ......    if(xxx){          a1();          Method method=TheSevice.class.getDeclaredMethod(methodName,new Class[]{.String.class , ..});         result=method.invoke(theService,args,..);         a2();     }       return result;}public String doXXX(String ...){     return doYYY("yourMethodName","yourArgs",otherNeed....);}现在的重复代码少多了!心得:1.接口写得垃圾会给调用者带来很多麻烦            2.尽量减少重复代码


1 0