结构型设计

main
陈彤 4 months ago
parent 428755ed89
commit 3063c8d06a

@ -0,0 +1,27 @@
package middleware;
/**
*
*
*/
public class AuthMiddleware extends MiddlewareDecorator {
public AuthMiddleware(HttpRequestHandler decoratedHandler) {
super(decoratedHandler);
}
@Override
public HttpResponse handle(HttpRequest request) {
// 简单的认证检查逻辑
String authHeader = request.getHeaders();
if (authHeader != null && authHeader.contains("Authorization: Bearer token123")) {
System.out.println("Authentication successful");
return super.handle(request);
} else {
HttpResponse response = new HttpResponse();
response.setStatusCode(401);
response.setBody("Unauthorized");
return response;
}
}
}

@ -0,0 +1,15 @@
package middleware;
/**
* HTTP
*
*/
public class BasicHttpRequestHandler implements HttpRequestHandler {
@Override
public HttpResponse handle(HttpRequest request) {
HttpResponse response = new HttpResponse();
response.setBody("Hello from Basic Handler: " + request.getPath());
response.setHeaders("Content-Type: text/plain");
return response;
}
}

@ -0,0 +1,23 @@
package middleware;
/**
* CORS
*
*/
public class CORSMiddleware extends MiddlewareDecorator {
public CORSMiddleware(HttpRequestHandler decoratedHandler) {
super(decoratedHandler);
}
@Override
public HttpResponse handle(HttpRequest request) {
HttpResponse response = super.handle(request);
// 添加CORS头信息
String existingHeaders = response.getHeaders() != null ? response.getHeaders() + "\n" : "";
response.setHeaders(existingHeaders + "Access-Control-Allow-Origin: *\nAccess-Control-Allow-Methods: GET, POST, PUT, DELETE\nAccess-Control-Allow-Headers: *");
return response;
}
}

@ -0,0 +1,40 @@
package middleware;
/**
* HTTP
*/
public class HttpRequest {
private String path;
private String method;
private String headers;
private String body;
public HttpRequest(String path, String method) {
this.path = path;
this.method = method;
}
public String getPath() {
return path;
}
public String getMethod() {
return method;
}
public void setHeaders(String headers) {
this.headers = headers;
}
public String getHeaders() {
return headers;
}
public void setBody(String body) {
this.body = body;
}
public String getBody() {
return body;
}
}

@ -0,0 +1,14 @@
package middleware;
/**
* HTTP
* HTTP
*/
public interface HttpRequestHandler {
/**
* HTTP
* @param request HTTP
* @return HTTP
*/
HttpResponse handle(HttpRequest request);
}

@ -0,0 +1,38 @@
package middleware;
/**
* HTTP
*/
public class HttpResponse {
private int statusCode;
private String headers;
private String body;
public HttpResponse() {
this.statusCode = 200;
}
public int getStatusCode() {
return statusCode;
}
public void setStatusCode(int statusCode) {
this.statusCode = statusCode;
}
public void setHeaders(String headers) {
this.headers = headers;
}
public String getHeaders() {
return headers;
}
public void setBody(String body) {
this.body = body;
}
public String getBody() {
return body;
}
}

@ -0,0 +1,20 @@
package middleware;
/**
*
*
*/
public class LoggingMiddleware extends MiddlewareDecorator {
public LoggingMiddleware(HttpRequestHandler decoratedHandler) {
super(decoratedHandler);
}
@Override
public HttpResponse handle(HttpRequest request) {
System.out.println("Logging request: " + request.getMethod() + " " + request.getPath());
HttpResponse response = super.handle(request);
System.out.println("Logging response status: " + response.getStatusCode());
return response;
}
}

@ -0,0 +1,18 @@
package middleware;
/**
*
* HttpRequestHandlerHttpRequestHandler
*/
public abstract class MiddlewareDecorator implements HttpRequestHandler {
protected HttpRequestHandler decoratedHandler;
public MiddlewareDecorator(HttpRequestHandler decoratedHandler) {
this.decoratedHandler = decoratedHandler;
}
@Override
public HttpResponse handle(HttpRequest request) {
return decoratedHandler.handle(request);
}
}
Loading…
Cancel
Save