Java 责任链设计模式示例:认证、授权和日志记录
以下是一个简单的责任链设计模式的 Java 代码示例,展示了如何实现认证、授权和日志记录功能。
首先,我们需要定义一个处理请求的接口:
public interface RequestHandler {
void handleRequest(Request request);
}
然后,我们可以实现具体的请求处理器:
public class AuthenticationHandler implements RequestHandler {
private RequestHandler nextHandler;
public AuthenticationHandler(RequestHandler nextHandler) {
this.nextHandler = nextHandler;
}
@Override
public void handleRequest(Request request) {
if (authenticate(request)) {
System.out.println('Authentication succeeded.');
if (nextHandler != null) {
nextHandler.handleRequest(request);
}
} else {
System.out.println('Authentication failed.');
}
}
private boolean authenticate(Request request) {
// Perform authentication logic here
return true;
}
}
public class AuthorizationHandler implements RequestHandler {
private RequestHandler nextHandler;
public AuthorizationHandler(RequestHandler nextHandler) {
this.nextHandler = nextHandler;
}
@Override
public void handleRequest(Request request) {
if (authorize(request)) {
System.out.println('Authorization succeeded.');
if (nextHandler != null) {
nextHandler.handleRequest(request);
}
} else {
System.out.println('Authorization failed.');
}
}
private boolean authorize(Request request) {
// Perform authorization logic here
return true;
}
}
public class LoggingHandler implements RequestHandler {
private RequestHandler nextHandler;
public LoggingHandler(RequestHandler nextHandler) {
this.nextHandler = nextHandler;
}
@Override
public void handleRequest(Request request) {
System.out.println('Logging request.');
if (nextHandler != null) {
nextHandler.handleRequest(request);
}
}
}
最后,我们可以将这些处理器组装成一个责任链:
public class RequestProcessor {
private RequestHandler chain;
public RequestProcessor() {
buildChain();
}
private void buildChain() {
chain = new LoggingHandler(new AuthenticationHandler(new AuthorizationHandler(null)));
}
public void processRequest(Request request) {
chain.handleRequest(request);
}
}
在这个示例中,我们实现了三个具体的请求处理器:AuthenticationHandler、AuthorizationHandler 和 LoggingHandler。每个处理器都实现了 handleRequest 方法,用于处理请求,并将请求传递给下一个处理器。最后,我们将这些处理器组装成一个责任链,并在 RequestProcessor 类中使用该责任链来处理请求。
可以这样使用该代码:
public class Main {
public static void main(String[] args) {
Request request = new Request();
RequestProcessor processor = new RequestProcessor();
processor.processRequest(request);
}
}
这将创建一个 RequestProcessor 对象,并使用它来处理请求。在这个示例中,请求会依次经过 LoggingHandler、AuthenticationHandler 和 AuthorizationHandler。如果所有处理器都成功处理请求,那么最终的输出应该是:
Logging request.
Authentication succeeded.
Authorization succeeded.
原文地址: https://www.cveoy.top/t/topic/l4LO 著作权归作者所有。请勿转载和采集!