责任链模式是一种行为型设计模式,它允许多个对象来处理请求,而不是只有一个对象来处理请求。每个对象都可以决定是否处理请求,如果它不能处理请求,它会将请求传递给下一个对象,直到请求被处理为止。
下面是一个简单的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); } }
在这个例子中,我们创建了三个处理器,并将它们链接在一起,形成一个责任链。然后,我们创建了三个请求,并将它们传递给第一个处理器。第一个处理器将根据请求的类型将请求传递给下一个处理器,直到请求被处理为止。