• 适配器模式


    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 List handlerList = 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();
        }
    }
    
  • 相关阅读:
    课堂练习13 网络编程
    Towards Open-World Feature Extrapolation: An Inductive Graph Learning Approach
    SpringBoot全局异常配置
    vs2022 使用git同步报错以及解决每次推送要输入密码问题
    208道最常见的Java面试题整理(面试必备)
    vxe-table 打包部署上线,校验样式失效
    国密算法SSL证书
    Java项目:ssm+mysql医药进销存系统
    【电力系统】含电热联合系统的微电网运行优化附matlab代码和复现论文
    gan与dcgan训练自己的数据集
  • 原文地址:https://blog.csdn.net/qq_39716220/article/details/133824932