gpt4 book ai didi

java - 重构一个长 servlet 条件

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:25:04 26 4
gpt4 key购买 nike

我有一个 servlet,它可以接受超过两打不同类型的请求(在 servlet 中称为命令)。创建了一个非常大的条件来为这些结构如下的请求提供服务:

if (command.equals("Command1"))
doSomething();
else if (command.equals("Command2))
doSomethingElse();
else if (command.equals("Command3))
doThisOtherThing();
......

有没有更好的方法来编写这段代码?我正在阅读一本关于 JUnit 测试的书,该书建议在条件语句上使用多态性,但我只是不知道如何在此示例中执行此操作。有人有更好的主意吗?

谢谢,

埃利奥特

最佳答案

鉴于您正在使用 Servlet,您正在寻找的是 FrontController 。基本思想很简单,您拥有的每个命令字符串都可能被映射到一个 Map 中,您可以将操作移交给这些命令。

一个非常简单的实现看起来像这样:

Command commandAction = this.commands.get( command );
commandAction.doAction( request, response );

这消除了使用 if/switch 的需要,您可以让每个命令成为一个特定的类,从而改进您的代码组织。

显然,这是在重新发明轮子,因为 Java 中的所有 Web MVC 框架(如 Struts、SpringMVC、VRaptor 和 Play)都实现了这种模式并免费为您提供此功能,因此您也可以考虑切换到一个框架而不是停留使用纯 servlet 并构建您自己的本地 Web 框架。

关于java - 重构一个长 servlet 条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7061567/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com