什么是责任链模式,一般用在什么场景?

面试

责任链模式:将请求沿着处理者链进行传递,直到有一个处理者处理它为止。 使用场景:

1)前置的参数校验,将不同的校验规则拆分成不同的处理节点,依次进行校验。

2)多级流程审批,根据采购金额的大小,分配给不同级别的人员进行审批。

3)日志记录系统,将不同级别的日志记录器组织成一条链,当日志事件发生时,沿着链传递,直到找到合适的记录 器为止。

java 复制代码
// 抽象处理器
abstract class Handler {
    protected Handler next;

    public Handler setNext(Handler next) {
        this.next = next;
        return next; // 返回next方便链式调用
    }

    public abstract void handle(int amount);
}

// 组长:500以内
class LeaderHandler extends Handler {
    public void handle(int amount) {
        if (amount <= 500) {
            System.out.println("组长审批通过:" + amount);
        } else if (next != null) {
            next.handle(amount);
        }
    }
}

// 经理:500-2000
class ManagerHandler extends Handler {
    public void handle(int amount) {
        if (amount <= 2000) {
            System.out.println("经理审批通过:" + amount);
        } else if (next != null) {
            next.handle(amount);
        }
    }
}

// 使用
Handler chain = new LeaderHandler();
chain.setNext(new ManagerHandler()).setNext(new DirectorHandler());
chain.handle(1500); // 经理审批通过:1500
相关推荐
山峰哥13 分钟前
数据库工程与SQL调优:从慢查询到秒级响应的实战之路
java·开发语言·数据库·sql·深度优先·启发式算法
乐观的Terry15 分钟前
11、发布系统-用户认证与权限体系
java·spring boot·spring·spring cloud·mybatis
前端开发张小七15 分钟前
Java 学习笔记 · 第二课:面向对象核心(封装、继承、多态)及接口与异常
java·后端·程序员
wangjialelele22 分钟前
Selenium4 + Java Web自动化测试入门指南:从环境搭建到常用操作详解
java·开发语言·前端·测试工具·自动化
孙启超43 分钟前
【AI应用开发】LangChain 中 Chain 和 Agent 核心区别?
java·人工智能·langchain·llm·rag·ai应用开发·agent loop
leoZ2311 小时前
实战复盘:用 Claude Code 从零搭一个 GitHub PR 统计工具
java·人工智能·python·深度学习·自然语言处理·github·llama
William Dawson1 小时前
【踩坑实录|Hive1\.2\.1数据服务接口5大疑难问题调试与全方位优化方案】
java·hive·spring boot
2601_955759881 小时前
如何识别 Claude API 低价值调用并优化
java
鹿角片ljp2 小时前
Java框架篇:Spring + SpringMVC + SpringBoot + MyBatis深度复习
java·开发语言
Lyra_Infra2 小时前
Java 应用启动脚本 JDK 路径适配优化文档
java·shell