随笔- 79  文章- 1  评论- 1  阅读- 1678 

概述

职责链模式 (Chain of Responsibility Pattern) 又称责任链模式。它将请求的发送者和接收者解耦,如果有多个接收者,将这些接收者连接成一条链,请求沿着这条链传递,直到被处理。

优点:降低耦合度,符合“开闭原则”。
缺点:请求不一定会被处理。链过长会造成性能问题。

class Request {
  private String request;
  
  public String getRequest() {
    return request;
  }
}

abstract class Handler {
  protected Handler next;
  protected setNext(Handler h) {
    next = h;
  }
  
  abstract void deal(Request);
}

class HandlerA extends Handler {
  public void deal(Request r) {
    if (r == "a") {
      //
    } else if (this.next != null) {
      this.next.deal(r);
    }
  }
}

class HandlerB extends Handler {
  public void deal(Request r) {
    if (r == "b") {
      //
    } else if (this.next != null) {
      this.next.deal(r);
    }
  }
}

main() {
  Handler a = new HandlerA();
  Handler b = new HandlerB();
  a.setNext(b);
  
  Request r = new Request();
  a.deal(r);
}

图示:
image

参考

[1]. 刘伟, 设计模式. 2011.

 posted on   x-yun  阅读(10)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示