내 코드 에 if/else 문이 있으며 리팩토링을 생각하고 있습니다. 이미 비슷한 질문이 많이 있습니다. this. 가장 좋은 대답은 chain-of-responsibility 패턴이 좋은 선택이라는 것입니다. 그러나 아래는 제 코드의 일부입니다. CoR 패턴을 사용하면 Java 클래스를 70 개 이상 만들고 ArrayList를 만들어 해당 클래스의 인스턴스를 유지합니다. 더 많은 메모리를 소비합니다. 나는 또한 상태 패턴에 대해서도 배웠다. 또한 많은 수업을 만들어야한다.많은 양의 if refactor
단지 알고 싶다면 더 좋은 방법으로 해결할 수 있을까요?
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);
}
}
}
단일 패턴 일치 작업을 사용하여 선행 "키워드"를 결정할 수 있습니다. 이것은 활동 및 URL로 호출 할 BiConsumer를 검색하는 키로 사용할 수 있습니다. – laune