感谢您提前阅读我的问题。
有没有办法重构下面的代码?
下面的代码是关于处理我的项目中的错误的。
我省略了if-else代码并修改了变量名以使我的问题更简单。原始代码中有更多的if-else代码和变量。
private static final String NUMBER_ONE = "number.one";
private static final String NUMBER_TWO = "number.two";
private static final String NUMBER_THREE = "number.three";
private static final String NUMBER_FOUR = "number.four";
private static final String NUMBER_FIVE = "number.five";
// ... more error names
public void handler(ApiException exception, String customerNo, String code) {
if (is(NUMBER_ONE, exception)) {
throw new NumberOneException(customerNo, code);
} else if (is(NUMBER_TWO, exception)) {
throw new NumberTwoException(customerNo);
} else if (is(NUMBER_THREE, exception)) {
throw new NumberThreeException(code);
} else if (is(NUMBER_FOUR, exception)) {
throw new NumberFourException(customerNo, exception.toError());
} else if (is(NUMBER_FIVE, exception)) {
throw new NumberFiveException(exception.toError());
// ... too many if-else sentences :-(
}
private boolean is(ApiException exception, String errorCode) {
return StringUtils.equals(exception.getCode(), errorCode);
}
我考虑的是Enum或HashMap,但没有应用其中任何一个。
主要原因是每个异常需要不同的参数。
我仍然在考虑使用HashMap,但不确定它是否有效。
1条答案
按热度按时间hc8w905p1#
看一看Factory method pattern,它似乎是最适合本案例的。