什么是责任链模式
责任链模式是一种行为型设计模式,它的核心思想是将请求从一系列处理者中传递,直到其中一个处理者能够处理它为止。在这个过程中,请求可以被任何一个处理者处理,也可以被拒绝,直到有一个处理者能够处理请求。
在Java开发中,责任链模式的实现方式通常是通过一个抽象处理者(Handler)类来定义处理者的接口,并在这个类中定义一个指向下一个处理者的引用,形成一个链式结构。具体处理者(Concrete Handler)则继承自抽象处理者,并实现其处理请求的方法。当一个请求被发起时,它会首先被传递到第一个处理者,如果第一个处理者不能处理它,那么请求会被传递到下一个处理者,直到有一个处理者能够处理它为止。
责任链模式代码解释
下面我们以一个简单的例子来说明责任链模式的使用方法。假设我们有一个请假系统,需要根据不同的请假天数来分别由部门经理、人事主管和总经理进行审核。如果请假天数不超过2天,由部门经理审核;如果请假天数不超过5天,由人事主管审核;如果请假天数超过5天,则需要总经理审核。
首先我们定义一个抽象处理者类Handler:
public abstract class Handler {
protected Handler successor;
public void setSuccessor(Handler successor) {
this.successor = successor;
}
public abstract void handleRequest(int days);
}
在这个类中,我们定义了一个指向下一个处理者的引用successor,并提供了一个设置下一个处理者的方法setSuccessor。同时,我们还定义了一个抽象方法handleRequest,该方法用于处理请求。具体的处理者将继承这个类,并实现自己的handleRequest方法。
下面我们来定义具体的处理者类。首先是部门经理处理者:
public class DepartmentManager extends Handler {
@Override
public void handleRequest(int days) {
if (days <= 2) {
System.out.println("部门经理审批通过");
} else {
if (successor != null) {
successor.handleRequest(days);
}
}
}
}
在这个类中,我们实现了父类中定义的handleRequest方法,如果请假天数不超过2天,则部门经理能够处理该请求并输出相应的处理结果;否则,请求将被传递给下一个处理者,即人事主管处理者。
接下来是人事主管处理者:
public class HRManager extends Handler {
@Override
public void handleRequest(int days) {
if (days <= 5) {
System.out.println("人事主管审批通过");
} else {

责任链模式是一种行为型设计模式,用于将请求在一系列处理者之间传递,直到被处理。在Java中,通常通过抽象处理者和具体处理者类实现。文章通过请假系统为例,展示了如何创建和使用责任链。在Android中,事件分发机制就是责任链模式的一个应用,从Activity到ViewGroup,事件沿着视图层次结构传递,每个View都有机会处理事件。
最低0.47元/天 解锁文章
720

被折叠的 条评论
为什么被折叠?



