zoukankan      html  css  js  c++  java
  • 职责链模式例子

    public interface Filter {
        void doFilter(Request request,Response response,FilterChain fc);
    }
    public class FirstFilter implements Filter {
    
        @Override
        public void doFilter(Request request, Response response,FilterChain fc) {
            request.requestStr+="---FirstFilter";
            fc.doFilter(request, response, fc);
            response.responseStr+="---FirstFilter";
        }
    }
    public class SecondFilter implements Filter {
    
        @Override
        public void doFilter(Request request, Response response,FilterChain fc) {
            request.requestStr+="---SecondFilter";
            fc.doFilter(request, response, fc);
            response.responseStr+="---SecondFilter";
        }
    }
    public class FilterChain implements Filter {
        List<Filter> list = new ArrayList<Filter>();
        int index = 0;
    
        public void putChain(Filter filter) {
            list.add(filter);
        }
    
        @Override
        public void doFilter(Request request, Response response, FilterChain fc) {
            if (index == list.size())
                return;
    
            Filter filter = list.get(index);
            index++;
            filter.doFilter(request, response, fc);
        }
    }
    public class Request {
        public String requestStr="request:";
    }
    public class Response {
        public String responseStr="response:";
    }
    public static void main(String[] args) {
             
            Request request=new Request();
            Response response=new Response();
            FilterChain fc=new FilterChain();
            SecondFilter f2=new SecondFilter();
            FirstFilter f1=new FirstFilter();
            fc.putChain(f1);
            fc.putChain(f2);
            fc.doFilter(request, response,fc);
            System.out.println(request.requestStr);
            System.out.println(response.responseStr);
        }

    输出结果如下:

    request:---FirstFilter---SecondFilter
    response:---SecondFilter---FirstFilter

  • 相关阅读:
    java实现定时任务(Quartz)
    java实现发送邮件工具
    mysql服务器查询慢原因分析方法
    Vue 插槽
    Vue组件参数传递问题
    Vue路由
    Spring Boot2 拦截器对静态资源的放行
    Spring Boot过滤非法请求
    U盘安装linux(CentOS Kali ubuntu)无法挂载_实测
    如何编译Java程序以及运行程序
  • 原文地址:https://www.cnblogs.com/yehuabin/p/9762514.html
Copyright © 2011-2022 走看看