java责任链模式

在Java中实现责任链模式可以通过创建一个抽象处理器(Handler)和具体处理器(ConcreteHandler)来完成。下面是一个简单的示例:

首先,我们定义一个抽象处理器(Handler):

public abstract class Handler {
    protected Handler successor;

    public void setSuccessor(Handler successor) {
        this.successor = successor;
    }

    public abstract void handleRequest(Request request);
}
然后,我们创建具体的处理器类,它们将按照一定的顺序依次处理请求。每个处理器都可以选择将请求传递给下一个处理器或者自行处理请求。

public class ConcreteHandler1 extends Handler {
    @Override
    public void handleRequest(Request request) {
        if (request.getLevel() == 1) {
            System.out.println("ConcreteHandler1 处理请求");
        } else if (successor != null) {
            successor.handleRequest(request);
        }
    }
}

public class ConcreteHandler2 extends Handler {
    @Override
    public void handleRequest(Request request) {
        if (request.getLevel() == 2) {
            System.out.println("ConcreteHandler2 处理请求");
        } else if (successor != null) {
            successor.handleRequest(request);
        }
    }
}

public class ConcreteHandler3 extends Handler {
    @Override
    public void handleRequest(Request request) {
        if (request.getLevel() == 3) {
            System.out.println("ConcreteHandler3 处理请求");
        } else if (successor != null) {
            successor.handleRequest(request);
        }
    }
}
接下来,我们定义一个请求类(Request)来封装请求的信息:

public class Request {
    private int level;

    public Request(int level) {
        this.level = level;
    }

    public int getLevel() {
        return level;
    }
}
现在,我们可以使用责任链模式来处理请求。在责任链中,请求将从第一个处理器开始,依次传递给下一个处理器,直到有一个处理器能够处理该请求或者请求到达责任链的末端。

public class Main {
    public static void main(String[] args) {
        Handler handler1 = new ConcreteHandler1();
        Handler handler2 = new ConcreteHandler2();
        Handler handler3 = new ConcreteHandler3();

        handler1.setSuccessor(handler2);
        handler2.setSuccessor(handler3);

        Request request1 = new Request(1);
        Request request2 = new Request(2);
        Request request3 = new Request(3);

        handler1.handleRequest(request1);
        handler1.handleRequest(request2);
        handler1.handleRequest(request3);
    }
}
输出结果:

ConcreteHandler1 处理请求
ConcreteHandler2 处理请求
ConcreteHandler3 处理请求


这个例子展示了责任链模式的实现。通过创建一个处理器链,并设置每个处理器的后继处理器,请求会依次经过处理器链中的处理器进行处理,直到找到能够处理该请求的处理器或者到达责任链的末端。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小灰灰__

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值