美文网首页
有人使用这样的方式来实现责任链

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

作者: brzhang | 来源:发表于2017-11-28 18:38 被阅读37次
@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()]);
  }
}

相关文章

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

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

  • Java设计模式之责任链模式

    一、责任链模式的定义二、责任链模式的使用场景三、责任链模式UML类图四、责任链模式具体实例五、责任链模式代码实现 ...

  • mybatis 插件的原理-责任链和动态代理的体现

    责任链设计模式理解起来很简单, 网上找个例子看看即可。 mybatis 插件的原理使用的是动态代理和责任链来实现的...

  • 面试

    1、责任链模式 2、Bulid模式 3、Retrofit源码 (1)使用责任链模式实现 (2)Map使用 4、Re...

  • hsf笔记-InvocationHandler

    InvocationHandler使用责任链的方式来调用,总体思路就是一(出口)带多(拦截器) 1.Invocat...

  • 责任链模式

    抽象责任链处理者 抽象责任链处理者实现类 请求抽象类或接口 请求抽象类或接口实现类 场景使用

  • okhttp之拦截器

    拦截器的实现使用了责任链模式[https://gitee.com/ZingKing/JavaDesignPatte...

  • js实现继承

    1、使用ES6的方式 2、使用原型链组合继承 3、使用Object.create实现继承

  • 2021-2-17:Java HashMap 的中 key 的哈

    首先,我们知道 HashMap 的底层实现是开放地址法 + 链地址法的方式来实现。 即数组 + 链表的实现方式,通...

  • Okhttp3 Interceptor(三)

    前言 OkHttp 中的 Interceptor 是通过责任链模式来设计的, 责任链模式参考: 责任链模式 , 至...

网友评论

      本文标题:有人使用这样的方式来实现责任链

      本文链接:https://www.haomeiwen.com/subject/qebebxtx.html