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

面试

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

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
相关推荐
何以解忧,唯有..11 分钟前
Redis 过期事件监听:原理与实战
java
风中的小熊生气23 分钟前
Spring Boot 面试知识(二):分层、IoC、异常、配置与 Redis
java·springboot
泡茶喝茶写代码23 分钟前
量化数据开发实战系列(第 25 篇):基金基础接口实战:基金列表、ETF-LOF 分类、基金概况、净值数据
java·数据库·人工智能·python·mysql
shehuiyuelaiyuehao1 小时前
算法46,分治快排,排序数组
java·算法·排序算法·排序
野生技术架构师1 小时前
1200 道 JAVA 面试题(各大企业常见面试题及答案)
java·开发语言
careathers1 小时前
【数据结构】栈
java·数据结构
邪修king2 小时前
Re:Linux系统篇(二十六):文件系统(二):Ext 文件系统底层详解:从 inode、块组到软硬链接,结合 Windows 讲透文件管理本质
android·java·linux
Yyyyyy~2 小时前
【java】类和对象
java·开发语言
重生之小比特2 小时前
【Java SE】抽象类和接口
java·开发语言
Lyyaoo.2 小时前
【设计模型】策略模式
java