责任链模式允许你将请求沿着处理者链进行传递,直到有一个处理者能够处理该请求为止。以下是一个简单的 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处理。
本文通过Java代码展示了责任链模式的应用,如何创建请求类和处理者接口,以及如何通过实现类处理不同类型的请求,实现请求沿处理者链传递直到找到能处理的处理者。
531

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



