首页 > 其他分享 >设计模式:责任链模式

设计模式:责任链模式

时间:2024-04-09 18:33:55浏览次数:23  
标签:请求 处理 Approver 模式 employeeName 责任 设计模式 public successor

责任链模式是一种行为设计模式,允许你将请求沿着一条链传递,直到一个对象处理它为止。这种模式包含了一些处理对象,每个对象都包含逻辑来处理特定类型的命令或请求。如果一个对象不能处理该请求,它就会将请求传递给链中的下一个对象,如此类推。

定义

责任链模式通过定义一个对象链来分配请求的处理,每个对象在处理请求或将请求传递给链中的下一个对象方面都有自己的职责。这种模式背后的关键思想是解耦发送者和接收者。

应用场景

责任链模式适用于以下情况:

  • 当一个请求可能有多个处理程序,但只有一个处理程序需要处理请求时。
  • 当处理程序集应该动态指定时。
  • 当需要在不明确指定确切处理程序的情况下,以透明的方式处理请求时。

示例与反例

示例
下面是一个使用责任链模式的Java代码示例。我们将模拟一个简单的请假审批流程,其中包含几个层级的审批者:直接主管(Manager)、部门主管(Director)和人力资源(HR)。每个审批者都可以处理一定范围内的请假天数。

首先,我们定义一个抽象的处理者类 Approver,它将作为责任链中的节点:

abstract class Approver {
   
    protected Approver successor;

    public void setSuccessor(Approver successor) {
   
        this.successor = successor;
    }

    public abstract void processRequest(LeaveRequest request);
}

class LeaveRequest {
   
    private String employeeName;
    private int leaveDays;

    public LeaveRequest(String employeeName, int leaveDays) {
   
        this.employeeName = employeeName;
        this.leaveDays = leaveDays;
    }

    public String getEmployeeName() {
   
        return employeeName;
    }

    public 

标签:请求,处理,Approver,模式,employeeName,责任,设计模式,public,successor
From: https://blog.csdn.net/liu_rockefeller/article/details/137500695

相关文章

  • UI自动化之设计模式--关键字驱动设计
    UI自动化测试框架:1.关键字驱动设计2.Excel数据驱动设计3.框架实现UI测试框架之设计模式:(一)设计模式介绍1.目前主流的测试框架的设计模式:*1.1关键字驱动:最核心,最传统的设计模式。基于关键字的形态来实现对业务的自动化执行。通过操作行为的封装或者是通过业务流程的封装......
  • 瑞_23种设计模式_备忘录模式(快照模式)
    文章目录1备忘录模式(MementoPattern)★1.1介绍1.2概述1.3备忘录模式的结构1.4备忘录模式的优缺点1.5备忘录模式的使用场景2案例一2.1需求2.2“白箱”备忘录模式2.3“黑箱”备忘录模式★★★3案例二3.1需求3.2代码实现......
  • git reset 的三种模式
    –soft:这种模式下,gitreset会移动HEAD指针到指定的提交,但不会更改暂存区或工作目录中的文件。这意味着您之前提交的更改将会被“取消”,但是这些更改仍然保留在暂存区中,您可以重新提交它们。–mixed:这是默认的模式,如果不指定任何模式,gitreset将使用这个模式。在......
  • SeleniumBase 录制模式-使用笔记(二)
    自动化福音(爬虫、办公、测试等)SeleniumBase使用笔记(二)SeleniumBase录制模式SeleniumBase提供录制模式,可以直接录制操作,并生成脚本。目录启用录制录制功能操作结束录制启用录制直接命令启用#new_recording.py=输出文件名#URL:路径sbasemkrecnew_recordi......
  • java设计模式回忆录
    java设计模式一.概念:在软件开发过程中的,经过验证的,在特定环境下重复发生特定问题的解决方案二.原则:OOP七项原则solid五项:功能的单一职责原则、开闭原则(便于扩展)、里氏替代原则(子类内代替父类)、接口隔离原则、依赖导致原则(依赖接口)迪米特原则(最小知道原则)、合成复用原则(用组合......
  • 《模版模式(极简c++)》
            本文章属于专栏-概述-《设计模式(极简c++版)》-CSDN博客       本章简要说明适配器模式。本文分为模式说明、本质思想、实践建议、代码示例四个部分。模式说明方案:模版模式定义了一个逻辑的骨架,将某些步骤推迟到子类中实现。父类定义了一个模版方......
  • 大话设计模式-简单工厂模式
    简单工厂模式面向对象和面向过程在大话设计模式中,为了引出简单工厂模式这一个话题,作者举了一个计算器的例子,通过不断的去优化计算器功能的实现代码,来帮助我们理解面向对象这一概念。首先是初始的代码,逻辑简单明了,是面向过程的方法去解决的,用计算机的方式去思考问题,直接判断输......
  • Spring之代理模式
    目录前言为什么需要代理呢?  JDK动态代理方法一:方法二: 通用代理对象实现 CGLIB代理1.什么是CGLIB呢?2.与JDK代理有什么区别呢?3.项目建立4.CGLIB常用API前言   在Spring框架中,代理是一种用于实现AOP(Aspect-OrientedProgramming,面向切面编程)和声明式......
  • playwright-异步模式
    #异步模式importasynciofromplaywright.async_apiimportasync_playwright#导入异步模块asyncdefmain():#封装一个特殊函数#创建一个Playwright的管理器对象asyncwithasync_playwright()asp:#等同于p=sync_playwright()#基于p创建一个浏览器......
  • 桥接模式
     1.手机操作问题不同后记类型的不同品牌实现打电话功能 传统解决方式 缺点:如果此时想要在增加一种手机样式(旋转式),那么就需要在手机样式下同时在增加不同品牌的手机;同样如果想要增加一个品牌(huawei),那么就需要在每一种样式下增加品牌,会增加很多类; 2.桥接......