美文网首页
责任链模式

责任链模式

作者: 上海马超23 | 来源:发表于2017-06-24 10:37 被阅读0次
  • 抽象类 handler

    • level 属性: 当前handler能够处理的责任级别
    • 构造方法(level)
    • nextHandler:责任链的下一个节点,还有setter
    • final方法 HandlerMessage(Request):这是handler的公共逻辑,负责判断当前请求的level能否处理,如果不能处理传递给下一个handler。唯一对外公开的方法。
    • abstract方法 response(Request) :处理请求
  • handlerImplement

    • 实现response方法,定义该角色的职能。
    • 构造方法定义该角色能够处理的任务level
  • 请求接口 RequestInterface

    • getLevel:返回任务的level
    • getRequest:返回任务的请求信息
requests = new List(new request1(), new request2(), new request3());
handler1 = new HandlerImplement1();
handler2 = new HandlerImplement2();
handler3 = new HandlerImplement3();
handler1.setNext(handler2);
handler2.setNext(handler3);
for (request : requests) {
  handler1.HandleMessage(request); // 统一由责任链的第一个节点开始驱动
}

总结

优点

  1. 请求方不用知道整个处理链的全貌,只管调用第一个节点。扩展责任链节点也不会影响请求方。

缺点

  1. 请求链过长可能会造成性能问题。一般在Handler里设置最大节点数量属性,setNextHandler的时候判断是否超过该值,避免出现超长链。

相关文章

网友评论

      本文标题:责任链模式

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