有人使用这样的方式来实现责任链

@Override
  public void dump(DumperContext dumpContext) throws DumpException {
    PrintStream writer = dumpContext.getStdout();
    Iterator<String> argsIter = dumpContext.getArgsAsList().iterator();

    String command = ArgsHelper.nextOptionalArg(argsIter, null);

    if (CMD_LIST.equalsIgnoreCase(command)) {
      doList(writer);
    } else if (CMD_DELETE.equalsIgnoreCase(command)) {
      doRemove(writer, argsIter);
    } else if (CMD_CLEAR.equalsIgnoreCase(command)) {
      doClear(writer);
    } else if (CMD_REFRESH.equalsIgnoreCase(command)) {
      doRefresh(writer);
    } else {
      usage(writer);
      if (command != null) {
        throw new DumpUsageException("Unknown command: " + command);
      }
    }
  }

第一个参数作为命令已经被消耗掉了,后面的参数属于后面的部分取过来使用

public class ArgsHelper {
  public static String nextOptionalArg(Iterator<String> argsIter, String defaultValue) {
    return argsIter.hasNext() ? argsIter.next() : defaultValue;
  }

  public static String nextArg(Iterator<String> argsIter, String errorIfMissing)
      throws DumpUsageException {
    if (!argsIter.hasNext()) {
      throw new DumpUsageException(errorIfMissing);
    }
    return argsIter.next();
  }

  public static String[] drainToArray(Iterator<String> argsIter) {
    List<String> args = new ArrayList<>();
    while (argsIter.hasNext()) {
      args.add(argsIter.next());
    }
    return args.toArray(new String[args.size()]);
  }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,397评论 19 139
  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    数据革命阅读 14,186评论 2 33
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,352评论 25 709
  • 今天老妈休班过来帮我带孩子,下班我们三口回来匆忙吃饭又来不及交流,老妈又匆匆的走了,怕明天早上上班迟到要回到租的小...
    毛毛咻咻萌萌阅读 1,378评论 0 0
  • 文/夏莲 我想如果说爱情能从告白开始的话,那一定是从最初单方面的爱慕开始的吧,既然有这样的爱,我认为也必定有一种爱...
    周小锦阅读 1,950评论 17 6