在软件开发中,责任链模式(Chain of Responsibility Pattern)是一种非常实用的行为型设计模式。它允许你将请求沿着处理者链进行传递,直到有对象处理它为止。这种模式可以有效解耦请求的发送者和接收者,让多个对象都有机会处理请求。
本教程将用通俗易懂的方式,手把手教你如何在Java语言中实现责任链模式,即使你是编程小白,也能轻松掌握!
想象一下你在公司申请请假:先提交给组长,如果组长不能批准(比如超过3天),就转交给经理;如果经理也不能批准(比如超过10天),就继续转交给总监……这就是一个典型的责任链。

在Java设计模式中,责任链模式的核心思想是:
责任链模式通常包含以下角色:
下面我们通过一个“审批请假”的例子来演示Java责任链实现。
public abstract class Approver { protected Approver nextApprover; // 下一个处理者 public void setNextApprover(Approver approver) { this.nextApprover = approver; } // 处理请求的抽象方法 public abstract void processRequest(LeaveRequest request);}public class LeaveRequest { private String employeeName; private int days; public LeaveRequest(String employeeName, int days) { this.employeeName = employeeName; this.days = days; } // Getter 方法 public String getEmployeeName() { return employeeName; } public int getDays() { return days; }}组长(TeamLeader):可批准 ≤ 3 天的假期
public class TeamLeader extends Approver { @Override public void processRequest(LeaveRequest request) { if (request.getDays() <= 3) { System.out.println("组长批准了 " + request.getEmployeeName() + " 的 " + request.getDays() + " 天假期。"); } else if (nextApprover != null) { System.out.println("组长无法批准,转交经理处理..."); nextApprover.processRequest(request); } }}经理(Manager):可批准 ≤ 7 天的假期
public class Manager extends Approver { @Override public void processRequest(LeaveRequest request) { if (request.getDays() <= 7) { System.out.println("经理批准了 " + request.getEmployeeName() + " 的 " + request.getDays() + " 天假期。"); } else if (nextApprover != null) { System.out.println("经理无法批准,转交总监处理..."); nextApprover.processRequest(request); } }}总监(Director):可批准任意天数
public class Director extends Approver { @Override public void processRequest(LeaveRequest request) { System.out.println("总监批准了 " + request.getEmployeeName() + " 的 " + request.getDays() + " 天假期。"); }}public class Client { public static void main(String[] args) { // 创建处理者 TeamLeader teamLeader = new TeamLeader(); Manager manager = new Manager(); Director director = new Director(); // 构建责任链 teamLeader.setNextApprover(manager); manager.setNextApprover(director); // 发起不同天数的请假请求 LeaveRequest request1 = new LeaveRequest("张三", 2); teamLeader.processRequest(request1); // 组长处理 System.out.println("-------------------"); LeaveRequest request2 = new LeaveRequest("李四", 5); teamLeader.processRequest(request2); // 转交经理 System.out.println("-------------------"); LeaveRequest request3 = new LeaveRequest("王五", 10); teamLeader.processRequest(request3); // 转交总监 }}组长批准了 张三 的 2 天假期。-------------------组长无法批准,转交经理处理...经理批准了 李四 的 5 天假期。-------------------组长无法批准,转交经理处理...经理无法批准,转交总监处理...总监批准了 王五 的 10 天假期。通过本教程,我们深入学习了责任链模式在Java语言中的实现方式。作为重要的行为型设计模式之一,它在实际项目中应用广泛,尤其适合构建灵活、可扩展的请求处理流程。
记住关键点:每个处理者决定自己是否处理,否则传递下去。掌握这一思想,你就能轻松应对各种复杂的业务审批或过滤场景!
现在,快去你的项目中试试Java责任链实现吧!
本文由主机测评网于2025-12-15发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/2025127946.html