以下是一个简单的责任链设计模式的 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.
Java 责任链设计模式示例:认证、授权和日志记录

原文地址: https://www.cveoy.top/t/topic/l4LO 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录