各大网站有哪些,成都 网站建设公司哪家好,wordpress主题 德国,长春做网站企业系列文章目录
设计模式之-6大设计原则简单易懂的理解以及它们的适用场景和代码示列 设计模式之-单列设计模式#xff0c;5种单例设计模式使用场景以及它们的优缺点 设计模式之-3种常见的工厂模式简单工厂模式、工厂方法模式和抽象工厂模式#xff0c;每一种模式的概念、使用…系列文章目录
设计模式之-6大设计原则简单易懂的理解以及它们的适用场景和代码示列 设计模式之-单列设计模式5种单例设计模式使用场景以及它们的优缺点 设计模式之-3种常见的工厂模式简单工厂模式、工厂方法模式和抽象工厂模式每一种模式的概念、使用场景和优缺点。 设计模式之模板方法模式通俗易懂快速理解以及模板方法模式的使用场景 设计模式之-建造者模式通俗易懂理解以及建造者模式的使用场景和示列代码 设计模式之-代理模式快速掌握理解代理模式以及代理模式的使用场景 设计模式之-原型模式快速掌握原型模式通俗易懂的理解原型模式以及使用场景 设计模式之-中介者模式快速掌握中介者模式通俗易懂的讲解中介者模式以及它的使用场景 设计模式之-责任链模式快速掌握责任链模式通俗易懂的讲解责任链模式以及它的使用场景 设计模式之-装饰模式快速掌握装饰模式通俗易懂的讲解装饰模式以及它的使用场景 设计模式之-适配器模式快速掌握适配器模式通俗易懂的讲解适配器模式以及它的使用场景 文章目录 系列文章目录一、快速理解责任链模式二、责任链模式使用场景代码示例 一、快速理解责任链模式
责任链模式是一种行为型设计模式它将请求的发送者和接收者解耦使多个对象都有机会处理请求。每个接收者都包含对下一个接收者的引用形成一个链条当请求从链条的头部开始传递时每个接收者都有机会处理请求直到有一个接收者能够处理为止。
在现实生活中责任链模式的例子可以是请假审批流程。假设有多个层级的审批人员每个人都有不同的审批权限。当员工提交请假申请时请求会从最高层级的审批人员开始传递如果一个审批人员无法处理请求则将请求传递给下一个审批人员直到有人能够处理为止。
二、责任链模式使用场景
当有多个对象可以处理同一个请求时可以使用责任链模式。每个对象都有机会处理请求但处理者不需要知道请求的发送者和后续处理者。当需要动态指定处理请求的对象时可以使用责任链模式。可以根据特定条件来决定请求的传递顺序或跳过某些处理者。
代码示例
下面是一个通俗易懂的责任链模式示例代码以请假审批为场景
// 抽象处理者审批人
abstract class Approver {protected Approver nextApprover;public void setNextApprover(Approver nextApprover) {this.nextApprover nextApprover;}public abstract void approveLeave(int days);
}// 具体处理者主管
class Supervisor extends Approver {Overridepublic void approveLeave(int days) {if (days 2) {System.out.println(主管批准了请假申请);} else {if (nextApprover ! null) {nextApprover.approveLeave(days);} else {System.out.println(没有人能够处理该请假申请);}}}
}// 具体处理者经理
class Manager extends Approver {Overridepublic void approveLeave(int days) {if (days 5) {System.out.println(经理批准了请假申请);} else {if (nextApprover ! null) {nextApprover.approveLeave(days);} else {System.out.println(没有人能够处理该请假申请);}}}
}// 具体处理者CEO
class CEO extends Approver {Overridepublic void approveLeave(int days) {if (days 7) {System.out.println(CEO批准了请假申请);} else {System.out.println(没有人能够处理该请假申请);}}
}// 客户端代码
public class Main {public static void main(String[] args) {Approver supervisor new Supervisor();Approver manager new Manager();Approver ceo new CEO();supervisor.setNextApprover(manager);manager.setNextApprover(ceo);supervisor.approveLeave(3); // 主管批准了请假申请supervisor.approveLeave(6); // CEO批准了请假申请supervisor.approveLeave(9); // 没有人能够处理该请假申请}
}在上面的示例中Approver是抽象处理者定义了处理请假申请的方法和下一个处理者的引用。Supervisor、Manager和CEO是具体处理者分别实现了抽象处理者的处理请假申请方法并在其中判断是否能够处理请求如果不能处理则将请求传递给下一个处理者。
在客户端代码中首先创建了主管、经理和CEO对象并设置它们的下一个处理者。然后调用主管的approveLeave方法来发起请假申请该方法会根据请假天数判断是否能够处理请求如果不能处理则会将请求传递给下一个处理者。最后根据不同的请假天数输出不同的处理结果。
通过使用责任链模式可以灵活地指定处理请求的对象并且可以动态调整处理者的顺序或跳过某些处理者。责任链模式还可以将请求的发送者和接收者解耦使得它们之间的依赖关系更加松散。