java - 用于铁路模拟的命令处理程序/解析器

标签 java user-interface command-line command-line-arguments

I am trying to find a good way to create a user interface for my railway simulation.

For now, I have created a "Command" interface with the methods execute, getName, getArguments and then I created a class for each command (AddTrack, DeleteTrack, ..., Exit). However, I am still struggling with a good way to get all arguments, handling wrong inputs etc. Does someone have a better idea for my UI or can give me some basic structure for it?

Here is the list of all commands that I want to implement:

 - add track <startpoint> -> <endpoint>
 - delete track <trackID>
 - list tracks
 - set switch <trackID> position <point>
 - create engine <engineType> <class> <name> <length> <couplingFront> <couplingBack>
 - list engines
 - create coach <coachType> <length> <couplingFront> <couplingBack>
 - list coaches
 - create train-set <class> <name> <length> <couplingFront> <couplingBack>
 - list train-sets
 - delete rolling stock <id>
 - add train <trainID> <rollingStockID>
 - list trains
 - show train <trainID>
 - put train <trainID> at <point> in direction <x>,<y>
 - step <speed>
 - exit

将它们全部放在同一个方法中可能是一个不好的做法。这就是为什么我的计划是为每个命令创建一个新类。

我的问题是,我不确定如何识别命令,因为有些命令由一个单词组成(如退出、步骤),有些则由两个单词组成(添加轨道、删除轨道、设置开关)。您是否建议为所有添加命令(添加轨道、添加火车等)、列表命令(列出轨道、列出引擎等)等创建一个类?

最佳答案

如果您只想创建一个命令行工具,我会创建一些与“菜单”(命令处理)相关的特定类,然后为特定领域(与火车、轨道、引擎等相关的事物)创建特定类。

因此,您最终可能会遇到一些臃肿的命令处理,其中保存了某些状态(例如我们在 cli-app 中的位置),让用户选择某种状态(如果他想操纵轨道、火车或查看有关引擎的信息)。所有这些内容都在一个(或几个)菜单类中处理。该类负责保持状态并“导航”用户(这意味着调用其他类和方法)。

关于java - 用于铁路模拟的命令处理程序/解析器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60187738/

相关文章:

java - Android从捕获的图像中获取图像路径

java - 矩形渐变

python - 是否有用于轻松编写可缩放 UI 的 Python 库?

Android drawBitmap(...) 方法很慢?

c - 如何在 C 程序中启动和终止进程(命令 shell)?

C 中的命令行参数,无法理解其行为

c# - 为什么使用接口(interface)而不是抽象类更可取?

java - Play Framework 运行应用程序问题

c# - 如何使用C#使图片背景透明?

java - C# 程序不会从 Java 执行