java如何避免方法中的许多if/else条件?
我怀疑我的方法是否正确。这是一个URI
的合成器,我用它来http requests
。它只是从一个带有final Strings
的单独静态类中获取数据,将它们合并在一起,并在必要时包括从服务器令牌接收的数据。碰巧所有的URIs
都有令牌,只有一个,身份验证,没有令牌。我所做的:
private URI urlComposer(String apiUri, String token) {
URI uri = null;
try {
if(apiUri.equals("POST_AUTH_URL")) {
uri = URIUtils.createURI(null, MyConfig.WEB_SERVER, -1, apiUri, null, null);
return uri;
}
String tmp = apiUri.toString();
String[] array = tmp.split("<token>");
tmp = array[0] + auth.getToken() + array[1];
uri = URIUtils.createURI(null, MyConfig.WEB_SERVER, -1, tmp, null, null);
if (MyConfig.DEBUG) Log.d("Dev", "Constructed url " + uri);
return uri;
} catch (URISyntaxException e) {
if (MyConfig.DEBUG) Log.d("Dev", "urlComposer was unable to construct a URL");
e.printStackTrace();
}
return null;
}
试图展望未来,如果我有更多这样的特殊情况,我不喜欢生成更多if/else语句。一方面,我希望只调用一个方法来构造URI,另一方面,我不希望使用这些ifs
。我该怎么办
# 1 楼答案
理论上,可以使用createURI方法创建一个enum URI_类型(很难从提供的代码片段中导出实际参数)。这样,您只需对特定的枚举值调用此方法,该枚举值将有自己的特定实现
请参考this和this了解更多信息。希望有帮助
# 2 楼答案
如果总是设置URI,只设置不同的URI,则可以使用映射:
您可以稍后访问此地图: