【问题标题】:How to return out of command pattern in controller so that application stops running (Java)?如何在控制器中返回命令模式以使应用程序停止运行(Java)?
【发布时间】: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


【解决方案1】:

使用它来终止整个程序:

System.exit(0);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-26
    • 2022-01-23
    • 1970-01-01
    • 2016-03-11
    相关资源
    最近更新 更多