zoukankan      html  css  js  c++  java
  • 设计模式之 责任链模式

    责任链模式是一种非常有趣的模式。

    责任链模式用于避免请求发送者与多个请求处理者耦合在一起,让所有请求的处理者持有下一格对象的引用,从而将请求串联成一条链,在有请求发生时,可将请求沿着这条链传递,直到遇到该对象的处理器。

    image

    (1)定义处理接口

    public interface Handler{
        void operator();
    }

    (2)定义抽象处理类

    public abstract class AbstractHandler{
        private Handler handler;
        
        public Handler getHandler() {
            return handler;
        }
        
        public void setHandler(Handler handler) {
            this.handler = handler;
        }
    }

    (3)定义责任类

    public class AuthHandler extends AbstractHandler implements Handler{
        private final static Log logger = LogFactory.getLog(this.getClass());
        private String name;
        public AuthHandler(String name){
            this.name = name;
        }
        @Override
        public void operator(){
            logger.info("user auth...");
            if (getHandler() != null){
                getHandler().operator();
            }
        }
    }
    
    public class BusinessHandler extends AbstractHandler implements Handler{
        private final static Log logger = LogFactory.getLog(this.getClass());
        private String name;
        public BusinessHandler(String name){
            this.name = name;
        }
        @Override
        public void operator(){
            logger.info("business info handler ...");
            if (getHandler() != null){
                getHandler().operator();
            }
        }
    }
    
    public class ResponseHandler extends AbstractHandler implements Handler{
        private final static Log logger = LogFactory.getLog(this.getClass());
        private String name;
        public ResponseHandler(String name){
            this.name = name;
        }
        @Override
        public void operator(){
            logger.info("response  ...");
            if (getHandler() != null){
                getHandler().operator();
            }
        }
    }

    (4)使用责任链模式

    public static void main(String[] args){
        AuthHandler authHandler = new AuthHandler("auth");
        BusinessHandler businessHandler = new BusinessHandler("business");
        ResponseHandler responseHandler = new ResponseHandler("response");
        authHandler.setHandler(businessHandler);
        businessHandler.setHandler(responseHandler);
    }

  • 相关阅读:
    v-model的实现原理
    面试技巧
    Vue中使用mui的tab-top-webview-main完成分类滑动栏出现兼容问题如何解决
    前端jquery面试题个人总结
    下拉复选框
    什么是BFC
    CSS控制文本自动换行
    CSS+DIV布局中absolute和relative区别
    2种方式解决vue路由跳转未匹配相应路由避免出现空白页面或者指定404页面
    vue页面无操作10分钟内调转到登录页面
  • 原文地址:https://www.cnblogs.com/betterwgo/p/15238268.html
Copyright © 2011-2022 走看看