在我的代碼 中有一個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