• Filter过滤链条


    Filter.java

    package com.bjsxt.dp.filter;
    
    public interface Filter {
        String doFilter(String str);
    }

    SesitiveFilter.java

    package com.bjsxt.dp.filter;
    
    public class SesitiveFilter implements Filter {
    
        @Override
        public String doFilter(String str) {
            // process the sensitive words
            String r = str.replace("被就业", "就业").replace("敏感", "");
            return r;
        }
    }

    FaceFilter.java

    package com.bjsxt.dp.filter;
    
    public class FaceFilter implements Filter {
        @Override
        public String doFilter(String str) {
            return str.replace(":)", "^V^");
        }
    }

    HTMLFilter.java

    package com.bjsxt.dp.filter;
    
    public class HTMLFilter implements Filter {
    
        @Override
        public String doFilter(String str) {
            //process the html tag <>
            String r = str.replace('<', '[')
                       .replace('>', ']');
            return r;
        }
    
    }

    FilterChain.java

    package com.bjsxt.dp.filter;
    
    import java.util.ArrayList;
    import java.util.List;
    
    public class FilterChain implements Filter {
        List<Filter> filters = new ArrayList<Filter>();
        
        public FilterChain addFilter(Filter f) {
            this.filters.add(f);
            return this;
        }
        
        public String doFilter(String str) {
            String r = str;
            for(Filter f: filters) {
                r = f.doFilter(r);
            }
            return r;
        }
    }

    MsgProcessor.java

    package com.bjsxt.dp.filter;
    
    public class MsgProcessor {
        private String msg;
        FilterChain fc;
    
        public FilterChain getFc() {
            return fc;
        }
    
        public void setFc(FilterChain fc) {
            this.fc = fc;
        }
    
        public String getMsg() {
            return msg;
        }
    
        public void setMsg(String msg) {
            this.msg = msg;
        }
    
        public String process() {
            return fc.doFilter(msg);
        }
    }

    Main.java

    package com.bjsxt.dp.filter;
    
    public class Main {
        /**
         * @author admin
         */
        public static void main(String[] args) {
            String msg = "大家好:),<script>,敏感,被就业,网络授课没感觉,因为看不见大家伙儿";
            MsgProcessor mp = new MsgProcessor();
            mp.setMsg(msg);
            FilterChain fc = new FilterChain();
            fc.addFilter(new HTMLFilter()).addFilter(new SesitiveFilter());
            FilterChain fc2 = new FilterChain();
            fc2.addFilter(new FaceFilter());
    
            fc.addFilter(fc2);
            mp.setFc(fc);
            String result = mp.process();
            System.out.println(result);
        }
    
    }

    各类之间的关系图:

  • 相关阅读:
    定义通用类型,便于移植和32位、64位的编译
    映射密码的加密,解密以及暴力破解
    位移密码的加密,解密以及暴力破解
    TCP三次握手和四次挥手通俗理解
    git常用命令
    pip及npm换源
    win10安装Docker并换国内源
    搜索引擎工作原理
    wsgi_uwsgi_nginx理论知识
    课程全文检索接口
  • 原文地址:https://www.cnblogs.com/jianfengyun/p/3720334.html
Copyright © 2020-2023  润新知