责任链模式

  • 抽象类 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的时候判断是否超过该值,避免出现超长链。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容