1、首先定义一个接口适配器:
public interface ApiAdapter {
Object invoke(String apiName, Map<String, Object> params);
}
2、然后为每个企业实现一个适配器:
// 企业A适配器
public class ApiAdapterA implements ApiAdapter {
@Override
public Object invoke(String apiName, Map<String, Object> params) {
// 转换params为企业A参数格式
Object apiARes = invokeApiA(apiName, params);
// 转换结果为统一格式
return adaptApiAResult(apiARes);
}
}
// 企业B适配器
public class ApiAdapterB implements ApiAdapter {
@Override
public Object invoke(String apiName, Map<String, Object> params) {
// 转换params为企业B参数格式
Object apiBRes = invokeApiB(apiName, params);
// 转换结果为统一格式
return adaptApiBResult(apiBRes);
}
}
3、然后可以通过工厂创建适配器对象:
public class ApiAdapterFactory {
public static ApiAdapter createAdapter(String enterprise) {
if ("A".equals(enterprise)) {
return new ApiAdapterA();
} else if ("B".equals(enterprise)) {
return new ApiAdapterB();
}
//...
}
}
4、前端调用接口时候:
// 获取适配器对象
ApiAdapter adapter = ApiAdapterFactory.createAdapter(enterprise);
// 调用适配器接口
Object result = adapter.invoke(apiName, params);
// 返回结果给前端
这样通过适配器模式就可以实现前端接口透明地调用不同企业API的效果。