如果您正在编写可从命令行执行的程序,您通常希望为用户提供多个选项或标志,以及可能的多个参数.我偶然发现了这么多次,但是有没有某种设计模式可以循环遍历args并调用适当的处理函数?
考虑:
myprogram -f filename -d directory -r regex
在使用您的语言的任何内置函数检索参数后,如何组织处理函数?(欢迎语言特定的答案,如果这有助于你明确答案)
我认为以下答案更符合您的要求:
您应该看一下应用模板模式("设计模式"中的模板方法[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()视为适合参数处理(预处理)的部分.
希望这可以帮助.
我不知道任何有关处理的文件"模式".
我相信用于处理参数的最古老的库/ API之一是getopt.谷歌搜索"getopt"显示了很多手册页和实现链接.
通常,我的应用程序中有一个首选项或设置服务,参数处理器知道如何与之通信.然后将参数转换为此服务中的某个应用程序,而不是查询.这可以像设置字典一样简单(比如名为"filename"的字符串设置).
你没有提到这种语言,但对于Java,我们很喜欢Apache Commons CLI.对于C/C++,getopt.