【发布时间】:2014-09-24 14:16:53
【问题描述】:
我们有一个内部网站,其中包含数十种报告供用户选择。这些转到带有控制器的 Reports Servlet。它包含如下代码:
if (report.equals('reportOne')){
bo.runReportOne(requestObjectData);
} else if(report.equals('reportTwo')){
bo.runReportTwo(requestObjectData);
}
在分解事物之前,其中有多少 if/else 是最优的。例如,具有多个基于功能的 servlet。例如 ProcessReportsServlet、ResultReportsServlet、BillingReportServlet 等
谢谢, 布里塔
【问题讨论】:
-
一般来说这个逻辑不应该在Controller中。最好有一个服务类(例如 GenerateReportService)并将请求详细信息传递给它。服务应读取报告“名称”(?),如 - 'reportOne' - 应检索/生成 reportOne 并将其发送回控制器,控制器将作为响应发送给用户。
-
另外,您应该避免为每个单独的报告使用新方法。尝试创建一个通用服务方法,它接受 reportName 和其他需要的信息,并返回所需的报告。
标签: java servlets model-view-controller