命令模式与反射

6 java reflection design-patterns command-pattern

我有控制器根据命令名执行一些命令,取自url.重点是不使用if和switch子句.据我所知,只有两种方法可以做到 - 1)命令模式2)反射.

//Command pattern
class Controller{
  private HashMap<String,Command> commands;
  public void executeCommand(String commandName){
    commands.get(commandName).execute();
  }
  ...
}

//reflection
class Controller{
  public void readCommand(){
    ....
  }
  public void executeCommand(String commandName){
    this.getClass().getMethod(commandName+"Command").invoke(this);
  }
  ...
}
Run Code Online (Sandbox Code Playgroud)

所以问题:

  1. 哪一个更好?
  2. 在一个应用程序中让开发人员使用他们想要的方法之一是否正常.
  3. 还有其他方法吗?

小智 4

  1. 第一种方法更好,仅在没有其他选择时才使用反射。
  2. 在一个应用程序中应该有一种方法来解决一类问题。
  3. 我认为第一种方法很好。(比 if/else 块好得多)