我有一个用 JSP 制作的表单,这里有多个按钮 - “批准、拒绝、保存、取消”。 对于每个提交,控件都会转到单个 Controller (Servlet),并且我将这个提交处理为::
String methodName = (String) request.getParameter("methodName");
if(methodName.trim.toLower().equals("approve"))
{
approve_Claim(parameters);
}
else if(methodName.trim.toLower().equals("reject"))
{
reject_Claim(parameters);
}
else if(methodName.trim.toLower().equals("save"))
{
save_Claim(parameters);
}
else if(methodName.trim.toLower().equals("cancel"))
{
cancel_Claim(parameters);
}
有没有办法删除这些多个if, 请建议
最佳答案
看起来您基本上想要一个来自 methodName.trim().toLower()
的映射某种带有参数的“声明操作”。创建一个像这样的界面:
interface ClaimAction
{
void execute(Parameters parameters);
}
然后用CancelClaimAction
类来实现它, ApproveClaimAction
等等。接下来创建一个 Map<String, ClaimAction>
将“批准”映射到 ApproveClaimAction
等等然后:
String actionName = methodName.trim().toLower(Locale.US));
ClaimAction action = CLAIM_ACTION_MAPPING.get(actionName);
if (action != null)
{
action.execute(parameters);
}
else
{
// Error case, presumably.
}
您可以使用枚举来做到这一点,但我期望每个类都有足够的工作来完成,因此值得将它们分开并测试每个类单独。
关于java - 排除 if 的最佳方法,因为 if 会调用多个方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11201369/