【发布时间】:2015-10-08 02:50:40
【问题描述】:
我正在重构一个接受来自终端的命令的 Java 应用程序。目前,有一个巨大的 if-else 结构来检查发出的命令并执行所需的方法。我想知道是否可以用一个完善的设计模式替换这个逻辑。 我查看了命令模式和策略模式,但在这种情况下似乎无法理解它。请提出建议。
更新: 我确实使用了 JCommander,但这并没有摆脱 if-else 结构。
MyCommand cmd1 = new MyCommand();
...
...
MyCommandN cmdN = new MyCommandN();
JCommander cmd = new JCommander();
cmd.addCommand("myCommand1", cmd1);
...
...
cmd.addCommand("myCommandN", cmdN);
try {
cmd.parse(args);
//
if ("myCommand1".equals(cmd.getParsedCommand())) {
System.out.println("running command1");
}
...
...
else if ("myCommandN".equals(cmd.getParsedCommand())) {
// Sysout statements only for illustration. I call command specific methods here.
System.out.println("running commandN");
} else {
cmd.usage();
}
//
} catch (ParameterException ex) {
System.out.println(ex.getMessage());
cmd.usage();
}
【问题讨论】:
标签: java design-patterns terminal