物流网站和数据库建设,四川省二级建造师报名入口官网,三足鼎立小程序开发公司,川畅联系 做网站多少钱我将通过一个贴近现实的故事——请假审批流程#xff0c;带你了解和掌握责任链模式。
什么是责任链模式#xff1f;
责任链模式是一种行为设计模式#xff0c;它让你可以避免将请求的发送者与接收者耦合在一起#xff0c;让多个对象都有处理请求的机会将这个对象连成一条…我将通过一个贴近现实的故事——请假审批流程带你了解和掌握责任链模式。
什么是责任链模式
责任链模式是一种行为设计模式它让你可以避免将请求的发送者与接收者耦合在一起让多个对象都有处理请求的机会将这个对象连成一条链并沿着这条链传递该请求直到有一个对象处理它为止。 责任链模式的使用场景是什么
当你希望在一个对象链上按顺序发送请求让其中任何一个对象都有机会处理这个请求时就可以使用责任链模式。这样发送者会与一个或多个对象进行解耦合。
如何在实际中使用责任链模式
让我们看看如何在请假审批这个场景中使用责任链模式。首先我们为所有审批人创建一个通用的接口
public interface Approver {void setNextApprover(Approver nextApprover);void handleRequest(LeaveRequest request);
}然后我们为需要处理的请求定义一个类
public class LeaveRequest {private int leaveDays;// 基础信息如姓名、部门等public LeaveRequest(int leaveDays) {this.leaveDays leaveDays;}public int getLeaveDays() {return leaveDays;}
}接着我们分别实现各级审批人例如直接主管
public class Supervisor implements Approver {private Approver nextApprover;Overridepublic void setNextApprover(Approver nextApprover) {this.nextApprover nextApprover;}Overridepublic void handleRequest(LeaveRequest request) {if (request.getLeaveDays() 3) {// 批准请求} else {// 转交给更高级别的主管if (nextApprover ! null) {nextApprover.handleRequest(request);}}}
}// 你可以创建更多的审批人例如经理HR等它们的实现方式与主管类似。接下来我们可以构建一个完整的责任链
Approver supervisor new Supervisor();
Approver manager new Manager();
Approver hr new HR();// 设置责任链
supervisor.setNextApprover(manager);
manager.setNextApprover(hr);// 创建一个请假请求
LeaveRequest request new LeaveRequest(5);
// 发送请求
supervisor.handleRequest(request);在这个例子中由于请假天数超过了主管的审批权限3天所以主管将请求传递给了经理如果经理也无法处理它将再传递给HR。这样责任链模式使我们可以简单地添加或者删除审批级别并且使审批过程清晰透明。
总结责任链模式对于管理一个分层次的请求处理机制非常有用它降低了请求的发送者和接收者之间的耦合度增强了系统的扩展性。