设计模式,行为模式之责任链模式

责任链模式是一种行为设计模式,用于在多个处理器间传递请求,每个处理器可选择处理或传递请求。该模式常用于解耦请求者和处理器,例如在面试流程、HTTP过滤器和事件处理中。通过创建处理器链,请求沿链传递,处理器只关注自身逻辑,增删改操作不影响整体结构。
摘要由CSDN通过智能技术生成

1 概述

责任链模式(Chain of Responsibility Pattern)是常见的行为模式,它将处理器封装成一条处理链,让请求可以在链上传递。链上的处理器自行决定是否对请求进行处理。

2 责任链模式

一个典型的责任链模式的使用场景是,当一个事件或请求需要被多个处理器处理时。应用责任链模式,将所有的处理器串在一起,然后把请求从链的头部开始传送。各个处理器可以对请求进行判断,选择执行相关逻辑,或者将它传递给下一个处理器。如此一来,解耦了请求者和接收者(所有的处理器)。
一般情况下,链上的处理器需要持续有下一个处理器的引用,以便将请求往后传送,除此之外,单个处理器不需要知道整体的结构,只需专注于自己内部的处理逻辑。处理器的增删改也非常方便,只需在链上进行相应处理即可。
example

3 案例

现实中,链式处理的案例很多,比如面试流程。一个候选人,需要经过多轮的面试,合格之后,才能入职新公司。这里的面试官,就是处理器,用来处理面试请求。同时,一个公司有多个领域的面试官,Java面试官,只会选择面试Java候选人;而HR则会面试所有候选人:

public enum Major {
   
    JAVA, PYTHON, NA
}
// 面试候选人
public class Interviewee {
   
    private String name;
    private Major major;
    public Interviewee(String name, Major major) {
   
        this.name = name;
        this.major = major;
    }
    public String getName() {
    return name; }
    public Major getMajor() {
    return major; }
    @Override
    public String toString() {
   
        return "Interviewee " + name + ", majors in " + major;
    }
}

// 面试官,子类需要实现自己的面试方法
public abstract class Interviewer {
   
    private Major major;
    protected Interviewer nextInterviewer;
    public Interviewer(Major major) {
   
        this.major = major;
    }
    public Major getMajor() {
    return major; }
    // 重要方法:设置下一个面试官,形成责任链
    public void setNext(Interviewer nextInterviewer) {
   
        this.nextInterviewer = nextInterviewer;
    };
    public abstract boolean interview(Interviewee interviewee);
}
// java面试官
public class JavaInterviewer extends Interviewer {
   
    public JavaInterviewer() {
   
        super
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值