首页 > 其他 > 详细

设计模式中的责任链模式

时间:2021-06-08 17:09:04      阅读:13      评论:0      收藏:0      [点我收藏+]

责任链模式:spring AOP源码中使用的就是责任链模式。它是有一系列的过滤器组成,可以灵活的停止某个过滤器。

 

public interface Filter {

     boolean doFilter(Request request, Response response, FilterChain chain);
}

public class HTMLFilter implements Filter{

    @Override
    public boolean doFilter(Request request, Response response,FilterChain chain) {
        String reqstr=request.getMsg();
        reqstr=reqstr.replace("<","[");
        reqstr=reqstr.replace(">","]");

        request.setMsg(reqstr);
        chain.doFilter(request,response,chain);
        response.setMsg(response.getMsg()+"---HTMLFilter");
        return true;
    }
}


public class SensitiveFilter implements Filter{
    @Override
    public boolean doFilter(Request request, Response response, FilterChain chain) {

        String reqstr=request.getMsg();
        reqstr=reqstr.replace("996","955");
        request.setMsg(reqstr);
        chain.doFilter(request,response,chain);
        response.setMsg(response.getMsg()+"---SensitiveFilter");

        return true;
    }
}


public class Request {

    private String msg;

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }
}


public class Response {

    private String msg;

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }
}



public class FilterChain implements Filter{

    List<Filter> list=new ArrayList<Filter>();
    Integer index=0;
    public FilterChain add(Filter filter){

        list.add(filter);
        return this;
    }


    @Override
    public boolean doFilter(Request request, Response response, FilterChain chain) {
        if(index==list.size()){
            return false;
        }
        Filter f=list.get(index);
        index++;
        return f.doFilter(request,response,chain);
    }
}





public class Main {

    public static void main(String[] args) {
        String msg="欢迎访问:你好<script>^V^996,jiujiayi.com";
        Request request=new Request();
        request.setMsg(msg);
        Response response=new Response();
        String respstr=response.getMsg();

        FilterChain chain=new FilterChain();
        chain.add(new HTMLFilter()).add(new SensitiveFilter());
        chain.doFilter(request,response,chain);
        System.out.println(request.getMsg());
        System.out.println(response.getMsg());
    }

}

 

设计模式中的责任链模式

原文:https://www.cnblogs.com/zhaoyangxuan/p/14862154.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!