我试图避免大量if's
并使用OOP方式执行不同的执行。执行由ACTION整数决定,我在运行时从API获得。
我虽然关于命令模式,但它的外观如下:
我在Spring配置上创建了一个hashmap:
@Bean
public HashMap<Integer, Command> hashmapCommands() {
HashMap<Integer, Command> supportedCommands = new HashMap<>();
supportedCommands.put(command.action.getId(), myCommand());
..
}
@Bean
public Command MyCommand() {
return new myCommand();
}
public class MyCommand implements Command {
public final static ACTION action = 1;
@Override
public void execute(String runTimeData) {
//doSomeLogic
}
}
现在在我的案例的其他地方,我正在注入hashmapCommands:
在inoker课上:
public class TestCommands(){
..
supportedCommands = (HashMap<Integer, Command>) context.getBean("hashmapCommands");
...
public void someTest(){
Command myCommand = supportedCommands.get(1);
reportCommandBase.execute("some runtimeMessage");
}
我在执行中有params()使用Command模式使用它是错误的。
正如您所看到的,我必须发送运行时消息并避免if语句从hashmap检索命令执行。但我需要发送param,我只能在运行时获得。
Mybe我在我的案子上强制执行命令模式?其他建议?