23种设计模式-责任链模式(Android开发实际应用场景介绍)

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

什么是责任链模式

责任链模式是一种行为型设计模式,它的核心思想是将请求从一系列处理者中传递,直到其中一个处理者能够处理它为止。在这个过程中,请求可以被任何一个处理者处理,也可以被拒绝,直到有一个处理者能够处理请求。

在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 {
           
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值