我正在尝试找到一种为铁路仿真创建用户界面的好方法。
目前,我已经使用方法execute,getName,getArguments创建了一个“命令”接口,然后为每个命令(AddTrack,DeleteTrack等创建了一个类)。 , 出口)。但是,我仍在努力获取所有参数,处理错误的输入等的好方法。有人对我的UI有更好的主意还是可以给我一些基本的结构?
这是我要实现的所有命令的列表:
- 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中的位置),从而使用户有点肿,让用户选择某种状态(如果他想操纵轨道,火车或查看有关以下信息,引擎)。所有这些东西都在一个(或几个)菜单类中处理。此类负责保持状态并“导航”用户(这意味着调用其他类和方法)。