改造前
/**
* 获取表1数据集合
*
* @return 返回表1数据集合
*/
public List<OneDO> getOneDOs(String tableOne) {
List<OneDO> dtoList = Lists.newArrayList();
try {
dataHelper.download(tableOne,
result -> {
dtoList.addAll(JSONObject.parseArray(JSONObject.toJSONString(result), OneDO.class));
return true;
});
} catch (Exception e) {
log.error(String.format("getOneDOs error tableName=%s", tableOne), e);
}
return dtoList;
}
/**
* 获取表2数据集合
*
* @return 返回表2数据集合
*/
public List<TwoDO> getTwoDOs(String tableOne) {
List<TwoDO> dtoList = Lists.newArrayList();
try {
dataHelper.download(tableTwo,
result -> {
dtoList.addAll(JSONObject.parseArray(JSONObject.toJSONString(result), TwoDO.class));
return true;
});
} catch (Exception e) {
log.error(String.format("getTwoDOs error tableName=%s", tableOne), e);
}
return dtoList;
}
观察改造前的代码,发现每个方法,除了返回值的类型、和异常日志不同外,其他都是一样的,所以可以通过返回范型的方式,返回结果。
改造后
/**
* 获取表1数据集合
*
* @return 返回表1数据集合
*/
public List<OneDO> getOneDOs(String ds) {
return downLoad("tableOne", OneDO.class);
}
/**
* 获取表2数据集合
*
* @return 返回表2数据集合
*/
public List<TwoDO> getTwoDOs(String ds) {
return downLoad("tableTwo", TwoDO.class);
}
private <T> List<T> downLoad(String tableName, Class<T> classType) {
List<T> dtoList = Lists.newArrayList();
try {
dataHelper.download(tableName,
result -> {
dtoList.addAll(JSONObject.parseArray(JSONObject.toJSONString(result), classType));
return true;
});
} catch (Exception e) {
log.error(String.format("downLoad error tableName=%s, classType=%s", tableName, classType), e);
}
return dtoList;
}