package com.cdkj.project.design.adapter; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * @author YUFEI * @ClassName HttpHandler * @description: 业务实现类 * @date 2023年10月12日 * @version: 1.0 */ public class HttpHandler { private static final Logger logger = LoggerFactory.getLogger(HttpHandler.class); public void doHandle(){ logger.info("处理http请求"); } }
package com.cdkj.project.design.adapter; /** * @author YUFEI * @ClassName HttpAdapter * @description: 适配器 * @date 2023年10月12日 * @version: 1.0 */ public class HttpAdapter implements HandlerAdapter { @Override public boolean supports(Object handler) { return handler instanceof HttpHandler; } @Override public void handle(Object handler) { HttpHandler httpController = (HttpHandler) handler; httpController.doHandle(); } }
package com.cdkj.project.design.adapter; /** * @author YUFEI * @ClassName HandlerAdapter * @description: 适配器模式 * @date 2023年10月12日 * @version: 1.0 */ public interface HandlerAdapter { boolean supports(Object handler); void handle(Object handler); }
package com.cdkj.project.design.adapter; /** * @author YUFEI * @ClassName AnnotationAdapter * @description: 适配器 * @date 2023年10月12日 * @version: 1.0 */ public class AnnotationAdapter implements HandlerAdapter { @Override public boolean supports(Object handler) { return handler instanceof AnnotationHandler; } @Override public void handle(Object handler) { AnnotationHandler annotationController = (AnnotationHandler) handler; annotationController.doAnnotationHandle(); } }
package com.cdkj.project.design.adapter; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * @author YUFEI * @ClassName AnnotationHandler * @description: 业务实现类 * @date 2023年10月12日 * @version: 1.0 */ public class AnnotationHandler { private static final Logger logger = LoggerFactory.getLogger(AnnotationHandler.class); public void doAnnotationHandle(){ logger.info("处理Annotation请求"); } }
package com.cdkj.project.design.adapter; import java.util.ArrayList; import java.util.List; /** * @author YUFEI * @ClassName CustomDispatchServlet * @description: TODO * @date 2023年10月12日 * @version: 1.0 */ public class CustomDispatchServlet { private final ListhandlerList = new ArrayList<>(10); public CustomDispatchServlet() { handlerList.add(new AnnotationAdapter()); handlerList.add(new HttpAdapter()); } public void doDispatch(){ HttpHandler httpController = new HttpHandler(); //选择适配器 HandlerAdapter handler = getHandler(httpController); //调用适配器的处理方法 handler.handle(httpController); } public HandlerAdapter getHandler(Object handler) { for (HandlerAdapter currentHanler : handlerList) { if (currentHanler.supports(handler)) { // currentHanler.handle(handler); return currentHanler; } } return null; } public static void main(String[] args) { CustomDispatchServlet customDispatchServlet = new CustomDispatchServlet(); customDispatchServlet.doDispatch(); } }