接入了几家不同的供应商, 需要调用供应商的 http 接口. 供应商接口逻辑大同小异(个别参数有差别, 同一接口 URL 基本不一样的), 怎样实现好些呢? 策略设计模式?
现在实现方案是这样的, 请 v 友帮忙看下怎么优化好些, 或者帮忙指下这里有哪些硬伤, 多谢了.
如示例代码, VendorBase 是一个接口, FirstVendorImpl, SecondVendorImpl 分别是两家供应商对接的实现, 分别从 FirstVendorAPI, SecondVendorAPI 拿到参数和 URL.
但是 FirstVendorImpl, SecondVendorImpl 逻辑是一样的很多重复代码, 为了使用 FirstVendorAPI 和 SecondVendorAPI.
如代码中所示 FirstVendorAPI 都是 static 常量, static method. 想把 VendorAPI 抽象出来, 变量和方法都改成非 static 的.
FirstVendorAPI 和 SecondVendorAPI 都继承 VendorAPI, 每次获取参数都通过对象来获取可以吗?
public class FirstVendorAPI {
public static final String REGISTER_ACCOUNT_URL = "/registerAccount";
public static final JSONObject getRegAccountParams(String id) {
JSONObject params = new JSONObject();
params.put("id", id);
return params;
}
}
public class SecondVendorAPI {
public static final String REGISTER_ACCOUNT_URL = "/2/registerAccount";
public static final JSONObject getRegAccountParams(String id) {
JSONObject params = new JSONObject();
params.put("id", id);
return params;
}
}
public class FirstVendorImpl extends VendorBase {
@Override
public String registerAccount(String id) {
JSONObject params = FirstVendorAPI.getRegAccountParams(id);
String url = FirstVendorAPI.REGISTER_ACCOUNT_URL;
JSONObject retJsonObj = getHttpsResponse(url, params);
}
}
public class SecondVendorImpl extends VendorBase {
}