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

  • 相关阅读:
    Intellij IDEA调试功能使用总结
    193.数据库备份和恢复
    191.数据安全性控制
    192.数据完整性管理
    190.事务管理与并发控制
    189.存储过程和触发器
    云笔记项目-笔记列表弹出"分享移动删除"子菜单
    使用JavaMail发送邮件-从FTP读取图片并添加到邮件正文发送
    二进制学习
    云笔记项目-网页端debug功能学习
  • 原文地址:https://www.cnblogs.com/yehuabin/p/9762514.html
Copyright © 2011-2022 走看看