当前位置:  开发笔记 > 编程语言 > 正文

处理命令行参数的设计模式是什么

如何解决《处理命令行参数的设计模式是什么》经验,为你挑选了3个好方法。

如果您正在编写可从命令行执行的程序,您通常希望为用户提供多个选项或标志,以及可能的多个参数.我偶然发现了这么多次,但是有没有某种设计模式可以循环遍历args并调用适当的处理函数?

考虑:

myprogram -f filename -d directory -r regex

在使用您的语言的任何内置函数检索参数后,如何组织处理函数?(欢迎语言特定的答案,如果这有助于你明确答案)



1> 小智..:

我认为以下答案更符合您的要求:

您应该看一下应用模板模式("设计模式"中的模板方法[Gamma,el​​ al])

简而言之,它的整体处理如下:

If the arguments to the program are valid then
    Do necessary pre-processing
    For every line in the input
        Do necessary input processing
    Do necessary post-processing
Otherwise
    Show the user a friendly usage message

简而言之,实现一个ConsoleEngineBase类,该类具有以下方法:

PreProcess()
ProcessLine()
PostProcess()
Usage()
Main()

然后创建一个机箱,实例化一个ConsoleEngine()实例并发送Main()消息以启动它.

要查看如何将其应用于控制台或命令行程序的一个很好的示例,请查看以下链接:http: //msdn.microsoft.com/en-us/magazine/cc164014.aspx

这个例子是在C#中,但这些想法很容易在任何其他环境中实现.

您可以将GetOpt()视为适合参数处理(预处理)的部分.

希望这可以帮助.


赞成坚持概念而不是实施.我觉得这应该是选择的答案.

2> Peter Ritchi..:

我不知道任何有关处理的文件"模式".

我相信用于处理参数的最古老的库/ API之一是getopt.谷歌搜索"getopt"显示了很多手册页和实现链接.

通常,我的应用程序中有一个首选项或设置服务,参数处理器知道如何与之通信.然后将参数转换为此服务中的某个应用程序,而不是查询.这可以像设置字典一样简单(比如名为"filename"的字符串设置).



3> Jason Cohen..:

你没有提到这种语言,但对于Java,我们很喜欢Apache Commons CLI.对于C/C++,getopt.

推荐阅读
虎仔球妈_459
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有