如何实现状态命令模式

时间:2013-09-12 10:56:09

标签: java servlets

我将Java servlet前端控制器从一个大的if-else if块移植到命令模式,并创建了一个带有execute方法的命令接口。目前,我正在我的servlet的init()方法中实例化每个命令的实例,并将它们存储在HashMap中。我想知道如何在给定请求的上下文中运行必要的command.execute()

我是否在界面中添加setContext(HttpServletRequest request, HttpServletResponse response);方法并在执行之前从command.setContext(request, response)方法调用doGet()/doPost(),或者我是否应该在init()中实例化命令以开始用?相反,有一个构造函数将requestresponse作为args?

显然,该命令的目的是为给定的用户/会话设置各种属性,并确定要转发到的正确JSP,如果没有上下文,它就无法实现。

1 个答案:

答案 0 :(得分:1)

您应该使用:

command.execute(HttpServletRequest request, HttpServletResponse response);

所有州都可以(并且应该)记录在请求中。这很容易通过存储属性来实现。

有时您可能需要使用:

command.execute(this, HttpServletRequest request, HttpServletResponse response);

但可能只有当你的命令是enum而不是真实对象时。