Java 中责任链模式,请用代码具体举例

本文通过Java代码展示了责任链模式的应用,如何创建请求类和处理者接口,以及如何通过实现类处理不同类型的请求,实现请求沿处理者链传递直到找到能处理的处理者。

责任链模式允许你将请求沿着处理者链进行传递,直到有一个处理者能够处理该请求为止。以下是一个简单的 Java 示例:


// 定义请求类
class Request {
    private String content;

    public Request(String content) {
        this.content = content;
    }

    public String getContent() {
        return content;
    }
}

// 定义处理者接口
interface Handler {
    void handleRequest(Request request);
}

// 具体处理者实现处理者接口
class ConcreteHandler1 implements Handler {
    private Handler successor;

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

    public void handleRequest(Request request) {
        if (request.getContent().contains("request1")) {
            System.out.println("ConcreteHandler1: Handling the request");
        } else if (successor != null) {
            successor.handleRequest(request);
        }
    }
}

// 另一个具体处理者
class ConcreteHandler2 implements Handler {
    private Handler successor;

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

    public void handleRequest(Request request) {
        if (request.getContent().contains("request2")) {
            System.out.println("ConcreteHandler2: Handling the request");
        } else if (successor != null) {
            successor.handleRequest(request);
        }
    }
}

// 示例
public class Main {
    public static void main(String[] args) {
        // 创建处理者
        Handler handler1 = new ConcreteHandler1();
        Handler handler2 = new ConcreteHandler2();

        // 设置处理者链
        handler1.setSuccessor(handler2);

        // 创建请求
        Request request1 = new Request("This is request1");
        Request request2 = new Request("This is request2");

        // 处理请求
        handler1.handleRequest(request1);
        handler1.handleRequest(request2);
    }
}

在这个例子中,Request 类代表一个请求,Handler 接口定义了处理请求的方法 handleRequest()。ConcreteHandler1 和 ConcreteHandler2 是具体的处理者实现了该接口。在 Main 类中,我们创建了两个具体处理者,并设置了处理者链,然后创建了两个请求并调用了处理请求的方法。
当一个请求被发送时,它首先被第一个处理者处理,如果该处理者不能处理该请求,它将请求传递给下一个处理者,直到有一个处理者能够处理该请求为止。在这个示例中,请求1被ConcreteHandler1处理,请求2被ConcreteHandler2处理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值