如何在java servlet前端控制器中重构大的if else块

时间:2013-09-11 11:03:13

标签: java jsp design-patterns servlets

我目前正在为我的servlet使用前端控制器模式,并在doGet()doPost()方法中使用大型if-else if结构;但是,我的应用程序开始添加越来越多的功能,结果if-else块失控。我想知道什么是处理这种情况的流行策略(同时维护前端控制器)。

我所能想到的就是使用一个哈希表,它将路径(从请求URL)映射到确定适当JSP(并设置属性)的辅助方法。

我喜欢Spring框架的外观;但是,我目前无法移植到框架,Spring之类的东西如何避免我面临的问题?

2 个答案:

答案 0 :(得分:1)

独立于框架或技术,我遇到过几次你的情况,我一直在做的是使用命令模式:

https://en.wikipedia.org/wiki/Command_pattern

并在命令处理程序中使用Factory模式,该模式实例化相应的类以使用命令对象的信息处理请求。

使用这种架构,您可以灵活应对,并且很容易实现:)

答案 1 :(得分:0)

使用重构模式中描述的Replace Conditional with Command重构“模式”。

而不是

if(conditionA){
  //...
}else if(conditionB){
  //...
}
 ...

做:

Handler handler = LookupHandlerBy(condition);
handler.execute();