【发布时间】:2021-11-20 06:07:18
【问题描述】:
我正在使用命令模式设计一个控制器。 控制器内部有一个 while 循环,用于扫描用户输入。如果用户输入与特定字符串匹配,则执行命令类。这是一个代码片段:
public Controller(Readable in, Appendable out) {
this.out = out;
this.scan = new Scanner(in);
this.commandMap = this.generateCommands();
}
public void go(Model m) {
while (scan.hasNext()) {
String input = scan.next();
Command command = this.commandMap.get(input);
command.do(m);
}
}
我通常使用return 来停止应用程序。但是,当我在其中一个 Command 类中使用 return 时,应用程序会继续运行。我认为它只是回到这个上层循环。
顺便说一句,我所有的命令都是public void。
有没有办法从命令类中退出/关闭应用程序?就像“超级”返回?还是我不再需要让它们void 和 if/else 在控制器中返回。
编辑:system.exit(0) 对我来说似乎不是正确的解决方案,因为它不保留可附加日志?调用 system.exit(0) 后,我的 JUnit 测试不再打印出我附加的所有内容。
【问题讨论】:
-
请放置整个控制器类以及实现了命令模式的类。你能详细说明你打算做什么吗?
标签: java design-patterns