• 适配器模式


    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();
        }
    }
    
  • 相关阅读:
    功率谱分析笔记-------脑电相关
    pinpoint监控tomcat应用,页面显示No data collected
    万界星空科技商业开源MES,技术支持+项目合作
    Google Earth Engine(GEE)—— 快速进行农田作物土地分类和面积统计
    springboot水环境检测系统的设计与实现毕业设计源码041446
    【2023年新版】40套BIM+GIS项目案例合集,中建中铁中交企业内部学习资源免费领取
    Python:SM4
    最大似然估计,散度,交叉熵
    《FFmpeg Basics》中文版-08-模糊,锐化和其他去噪
    免安装版的Mysql安装与配置——详细教程
  • 原文地址:https://blog.csdn.net/qq_39716220/article/details/133824932