如果您正在编写一个可从命令行执行的程序,您通常希望为用户提供多个选项或标志,以及可能的多个参数。我已经多次遇到这个问题,但是是否有某种设计模式可以循环参数并调用适当的处理函数?
考虑:
myprogram -f filename -d directory -r regex
使用适合您的语言的任何内置函数检索参数后,如何组织处理程序函数? (欢迎特定语言的答案,如果这有助于您阐明答案)
请您参考如下方法:
我认为以下答案更符合您正在寻找的内容:
您应该考虑应用模板模式(“设计模式”[Gamma,等人]中的模板方法)
简而言之,它的整体处理如下所示:
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() 视为适合参数处理(预处理)的部分。
希望这有帮助。