缘起:07年8月进公司发现公司的控制页面跳转和功能执行方式如下,
jsp页面存放两个隐藏参数:
1)view:决定处理类型;
2)action:决定处理方式:
3)服务器端controller代码结构:
[code="java"]
if(view.equals("insert")){
if("insertProjectMes".equals(action)){
}
if("insertPictures".equals(action)){
}
...
}
else if(view.equals("update")){
...
}
else if(view.equals("select")){
...
}
else if(view.equals("delete")){
...
}
[/code]
每个controller十几个if,else也是家常便饭,多的时候几十个,而且业务经常新增,看到03年一直被修改过来的代码也是经常的事。
辞职在家进修学习,又想这个问题:请问怎么去除这些if else呢?
个人想法(spring):
1)在spring上下文中配置一个jsp,和controller,和一个action参数
2)在jsp中放置参数,值在第一次访问jsp的时候被spring注入;
3)controller中
a)定义四个接口,对应操作类型:有参数无返回,无参数无返回,有参数有返回,有参数无返回;
public interface Do1 {
Object doing();//无参数有返回
}
public interface Do2 {
void doing();//无返回无参数
}
public interface Do3 {
void doing(Object o);//无返回有参数
}
public interface Do4 {
Object doing(Object o);//有返回有参数
}
b)业务处理类,以action的值命名,实现上面某个接口,controller的内部类实现并存入map对象
c)controller通过map对象管理处理类,并在客户提交的时候根据传过来的action参数反射调用相应的业务处理类。
似乎就是一个状态模式。好处就是每个人需要添加的时候只要在后面添加新的内部类,并把自己加入map就行。
请问怎么去除这些if else呢? 谢谢