我有: 现有面向对象的本机代码API(非GUI) 适用于此API的GUI应用程序 目标: 创建一个额外的控制台应用程序,通过键入命令,用户可以执行一些工作流程(类似于上面的GUI应用程序).此应用
>现有面向对象的本机代码API(非GUI)
>适用于此API的GUI应用程序
目标:
创建一个额外的控制台应用程序,通过键入命令,用户可以执行一些工作流程(类似于上面的GUI应用程序).此应用程序应为“有状态” – 可用命令及其结果将取决于先前发出的命令.
问题:
我不想“重新发明轮子”.是否存在构建应用程序和定义“词汇表”的现有模式?目前,在我看来,最好的选择是“从头开始”编写一组助手和命令解析器.
附:如果我的API将在.Net中,我会考虑PowerShell方向,但API很大并将其包装到.Net中非常耗时.
要开始使用命令行,首先不要重新发明轮子.有很多选项来解析命令.在Java中有Commons CLI,它为您提供所需的一切.还有一个.NET CLI port.
InfiniteRed有a good writeup如何在Ruby中执行此操作.
就实施而言,你有正确的想法.但也不要在这里重新发明轮子.封装Command对象中的工作并查看使用Chain of Responsibility模式; Commons Chain运作良好.还有一个.NET Chain port.
如果不能使用这些框架,请查看它们是如何实现的.另外,如果你在使用其中一些选项进行互操作时遇到问题,Ruby对于做这类事情来说真是一把不错的瑞士军刀.它相对便携,代码最终可以非常干净,易于维护.
更新:JCommander也看起来很有趣.