在我的代码 中有一个if/else语句,我想重构它。我已经搜索了许多类似的问题。比如this。 最好的答案是说责任链模式是一个不错的选择。但下面是我的代码的一部分。如果我使用CoR模式,我将创建超过70个Java类并创建一个ArrayList来保存这些类的实例。它将消耗更多的内存。我也了解了国家的模式,也需要创建这么多的课程。大量的if if else重构
只是想知道有没有更优雅的方式来解决它?
if (urlContent.contains(YLWFX)) {
urlContent = urlContent.replace(YLWFX + ":", "");
if (urlContent.startsWith(TRANSMIT)) {
mProcess.onTransmit(activity, url);
} else if (urlContent.startsWith(TAKEORDER)) {
mProcess.onTakeOrder(activity, url);
} else if (urlContent.startsWith(GOODS)) {
if (urlContent.contains(GOODSMANAGER_MMZL)) {
mProcess.onEnterpriseShopManage(activity, url);
} else {
mProcess.onGoods(activity, url);
}
} else if (urlContent.startsWith(SUPPLIER)) {
mProcess.onSupplier(activity, url);
} else if (urlContent.startsWith(POSTS)) {
mProcess.onPosts(activity, url);
} else if (urlContent.startsWith(TEAM)) {
if (urlContent.contains(TEAM_LIST)) {
mProcess.onTeamList(activity);
} else if (urlContent.contains(TEAMINDEX)) {
mProcess.onTeamIndex(activity, url);
} else if (urlContent.contains(TEAMINFO)) {
mProcess.onTeamInfo(activity, url);
} else if (urlContent.contains(TEAMMEMBER_INFO)) {
mProcess.onTeamMemberInfo(activity, url);
} else {
mProcess.onTeam(activity, url);
}
}
}
您可以使用单个模式匹配操作确定前导“关键字”。这可以用作检索BiConsumer的关键,用活动和URL调用。 – laune