首页 > 其他分享 >职责链模式-15

职责链模式-15

时间:2023-07-14 23:55:18浏览次数:43  
标签:15 职责 deal void Request 模式 next Handler class

概述

职责链模式 (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.

标签:15,职责,deal,void,Request,模式,next,Handler,class
From: https://www.cnblogs.com/xdreamc/p/16462974.html

相关文章

  • 150.vuerouter中的导航钩子函数
    150.vue-router中的导航钩子函数(1)全局的钩子函数beforeEach和afterEachbeforeEach有三个参数,to代表要进入的路由对象,from代表离开的路由对象。next是一个必须要执行的函数,如果不传参数,那就执行下一个钩子函数,如果传入false,则终止跳转,如果传入一个路径,则导航到对应的......
  • 145.观察者模式和发布订阅模式有什么不同
    145.观察者模式和发布订阅模式有什么不同?发布订阅模式其实属于广义上的观察者模式在观察者模式中,观察者需要直接订阅目标事件。在目标发出内容改变的事件后,直接接收事件并作出响应。而在发布订阅模式中,发布者和订阅者之间多了一个调度中心。调度中心一方面从发布者接收事件,......
  • c语言中的大端模式和小端模式
    在学习共用体(联合体union)的时候,碰到了非常经典的大小端模式问题,以下是个人的见解:大端模式与小端模式所有运算的操作数,必须在CPU的內部寄存器才能参与运算对于CPU来说,寄存器才是它真正的储存空间,但是CPU的寄存器的个数以及容量是非常有限的,所以在设计CPU时,必须要有一个它的存储......
  • centos7.4二进制安装mariadb-10.2.15-linux-x86_64.tar.gz
    1检查环境iptablesselinuxmariadb-server2下载二进制包3useradd-r-d/data/mysqldb-s/sbin/nologinmysql4tarxvfmariadb-10.2.15-linux-x86_64.tar.gz-C/usr/local/cd/usr/localln-smariadb-10.2.15-linux-x86_64/mysqlchown-Rroot:rootmysql/5e......
  • 159
    倒车入库的第五天,明天下午或者后天应该可以练右倒车了吧,加油早上没去下午去了,练了三次,差不多可以入库了,不过还是得好好练。看点,控车速,入库时看左右镜的感觉明天接着练,上午下午都去,一定要好好练才行。赶紧把科目一的学时弄完啊,魂荡。......
  • 如何在win10系统主机中安装win10系统虚拟机(附win10镜像和VMware Station 15 Pro安装包
    win10虚拟机镜像:链接:https://pan.baidu.com/s/1duHTmR9ZHfRqwretY2IvHg提取码:6hi4VmwareStation15Pro安装包:链接:https://pan.baidu.com/s/1CiL8HcEAlYo-iyCrbkflpA提取码:ka9m 下载完后,安装VMwareStation。需要永久激活码的童鞋请参考:VMwareWorkstation15中文破解......
  • kubernetes网络模式
     一个K8s的集群中至少有三个网络:集群节点所在的网络,这个网络就是你的主机所在的网络,通常情况下是你的网络基础设施提供。如果你的node处于不同的网段,那么你需要保证路由可达。如上图中的192.168.10.0/24和10.0.0.0/8这两个网络第二个网络是Pod的网络,K8s中一个Pod由多个......
  • KingbaseES V8R6集群运维案例之---single-pro模式备份
    案例说明:KingbaseESV8R6集群物理备份配置参数_target_db_style,可选single或cluster或single-pro。single对应单机模式的目标数据库实例,cluster对应集群模式的目标数据库实例,single-pro对应集群模式的每个DB节点独立备份。本案例详细描述集群架构在singl-pro模式下的备份。适用......
  • mongodb4.4.22主从(副本集附仲裁节点)部署带认证模式
    环境:OS:CentOS7DB:4.4.22机器角色:192.168.1.102:29001主192.168.1.104:29001从192.168.1.105:29001仲裁节点 1.下载相应的版本https://www.mongodb.com/download-center/community我这里下载的是mongodb-linux-x86_64-rhel70-4.4.22.tgz 2.创建安装目录192.168.1.102......
  • JAVA设计模式之责任链模式
    设计模式设计模式(DesignPattern)是前辈们对代码开发经验的总结,是解决特定问题的一系列套路。它不是语法规定,而是一套用来提高代码可复用性、可维护性、可读性、稳健性以及安全性的解决方案。总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、......