责任链模式是一种行为型设计模式,它允许多个对象来处理请求,而不是只有一个对象来处理请求。每个对象都可以决定是否处理请求,如果它不能处理请求,它会将请求传递给下一个对象,直到请求被处理为止。
下面是一个简单的Java实现责任链模式的例子:
首先,我们定义一个处理请求的接口:
public interface Handler {
void setNextHandler(Handler handler);
void handleRequest(Request request);
}然后,我们实现这个接口,创建一个具体的处理器:
public class ConcreteHandler implements Handler {
private Handler nextHandler;
public void setNextHandler(Handler handler) {
this.nextHandler = handler;
}
public void handleRequest(Request request) {
if (request.getType() == RequestType.TYPE1) {
System.out.println("ConcreteHandler handles TYPE1 request");
} else if (nextHandler != null) {
nextHandler.handleRequest(request);
} else {
System.out.println("No handler found for request");
}
}
}在这个实现中,我们首先检查请求的类型是否是我们可以处理的类型。如果是,我们处理请求。否则,我们将请求传递给下一个处理器。如果没有下一个处理器,我们将输出一个错误消息。
最后,我们可以使用这些处理器来创建一个责任链:
public class Client {
public static void main(String[] args) {
Handler handler1 = new ConcreteHandler();
Handler handler2 = new ConcreteHandler();
Handler handler3 = new ConcreteHandler();
handler1.setNextHandler(handler2);
handler2.setNextHandler(handler3);
Request request1 = new Request(RequestType.TYPE1);
Request request2 = new Request(RequestType.TYPE2);
Request request3 = new Request(RequestType.TYPE3);
handler1.handleRequest(request1);
handler1.handleRequest(request2);
handler1.handleRequest(request3);
}
}在这个例子中,我们创建了三个处理器,并将它们链接在一起,形成一个责任链。然后,我们创建了三个请求,并将它们传递给第一个处理器。第一个处理器将根据请求的类型将请求传递给下一个处理器,直到请求被处理为止。