设计模式:责任链
package com.bjsxt.dp.filter;public class Main {/** * @param args */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);}}
package com.bjsxt.dp.filter;public class MsgProcessor {private String msg;//Filter[] filters = {new HTMLFilter(), new SesitiveFilter(), new FaceFilter()};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);}}
package com.bjsxt.dp.filter;public interface Filter {String doFilter(String str);}
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;}}
package com.bjsxt.dp.filter;public class HTMLFilter implements Filter {@Overridepublic String doFilter(String str) {//process the html tag <>String r = str.replace('<', '[') .replace('>', ']');return r;}}