【问题标题】:Design pattern for argument processing [duplicate]参数处理的设计模式
【发布时间】:2016-03-15 06:42:36
【问题描述】:

我有一个用作命令行应用程序的 Java 程序。 我正在使用jopt 进行参数处理。 当从 Jopt 获取值时,代码会变得丑陋,因为根据参数值选择执行路径的情况有多种。

这是负责根据参数值选择下一步的方法:

private void processArgs(String args[])  {
      .......
     if (argsList.contains(VERSION)) {
        showVersion();
        return;
    }

    if (argsList.contains(SHOWENV)) {
        showEnv();
    }

    if (parsed.has(TARGET_LANG)) {
        String targetedLang = _targetLangOptionSpec.value(parsed);

        if (!JAVA.equalsIgnoreCase(targetedLang))
        {
             execJava();
            return;
        }
    }
    if (parsed.has(TARGET)) {
        processTargets();
        return;
    }

    if (parsed.has(EXEC)) {
        processExec();
    }

    if (parsed.has(CONSOLIDATE)) {
        consolidate();
    }
    ......
   } 

我想知道这种情况是否已经被某种设计模式处理过。

我查看了here 的答案,但没有提出明确的解决方案。

【问题讨论】:

  • Apache commons CLI 库有非常好的命令行处理实用程序,如果您没有遇到过的话。 commons.apache.org/proper/commons-cli
  • 你能提供一个你试图解决的问题的例子吗?
  • @Bajal 我已经使用 Jopt java 来处理参数的处理。我的问题是根据参数的值处理多种执行情况的最佳方法。
  • 谷歌策略模式

标签: java design-patterns


【解决方案1】:

一种选择是创建一个单独的类来解析参数。然后您可以查询它的状态以确定应该使用哪些执行案例。

这种方法将解析与执行分开,我认为这是很好的设计(如果我错了,请纠正我)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-23
    • 1970-01-01
    • 2011-10-25
    • 2014-02-23
    相关资源
    最近更新 更多