0

我有一个网页,用户可以在其中填写和提交表单:

 <form id=email...
 send email ....
 <input type="hidden"id="method" value="sendemail"...
 />
  .............

 <form id=writeindatabase
 some data
      ............
 <input type="hidden"id="method"  value="writeindatabase"...

在服务器端:

if (method.compareTo("sendemail")==0) {
 doSendEmail(....
}
else if (method.compareTo("writeindatabase")==0) {
  doWriteInDatabase(....

 ..............................

我不喜欢这种架构,因为它违反了开闭原则。是否有可能重构这个来解决这个问题?谢谢。

4

1 回答 1

2

您可以以结构化、安全的方式使用反射,或者类似地使用命令模式。

  • 反射:制作一个Map<String, Method>将每个可接受的方法名称映射到一个反射Method对象,您可以invoke在查找它之后。

  • 命令模式:以与上述类似的方式使用 a Map<String, Callable<?>>。将 s 实例化为通过调用适当的服务方法Callable实现的匿名内部类。call

于 2013-02-21T14:43:54.920 回答