首页 > 代码库 > 设计模式之——责任链模式
设计模式之——责任链模式
1 责任链
1 package com.alvin;2 3 public interface Filter {4 public String doFilter(String str);5 }
1 package com.alvin;2 3 public class HtmlFilter implements Filter{4 5 public String doFilter(String str) {6 return str.replace(‘<‘, ‘[‘).replace(‘>‘, ‘]‘);7 }8 9 }
1 package com.alvin; 2 3 public class WordsFilter implements Filter{ 4 5 @Override 6 public String doFilter(String str) { 7 // TODO Auto-generated method stub 8 return str.replace("铭感词", "河蟹"); 9 }10 11 }
1 package com.alvin; 2 3 public class MesProcessor { 4 private String msg; 5 Filter [] filters = {new HtmlFilter(), new WordsFilter()}; 6 7 public String getMsg() { 8 return msg; 9 }10 11 public void setMsg(String msg) {12 this.msg = msg;13 }14 15 public String process(){16 String r = msg;17 for (Filter f : filters) {18 r = f.doFilter(r);19 }20 return r;21 }22 }
1 package com.alvin; 2 3 public class Main { 4 public static void main(String[] args) { 5 String msg = "<script>,:),kdkjfejfid, 敏感词:)"; 6 MesProcessor mp = new MesProcessor(); 7 mp.setMsg(msg); 8 String result = mp.process(); 9 System.out.println(result);10 }11 }
测试结果为:[script],:),kdkjfejfid, 河蟹:)
2 改进数组,采用ArrayList,增加FilterChain类
1 package com.alvin; 2 3 import java.util.ArrayList; 4 import java.util.List; 5 6 public class FilterChain { 7 List<Filter> filters = new ArrayList<>(); 8 9 public void addFilter(Filter f) {10 filters.add(f);11 }12 13 public String doFilter(String str) {14 for (Filter filter : filters) {15 str = filter.doFilter(str);16 }17 return str;18 }19 }
修改MesProcessor
1 package com.alvin; 2 3 public class MesProcessor { 4 private String msg; 5 FilterChain filterChain; 6 7 public FilterChain getFilterChain() { 8 return filterChain; 9 }10 11 public void setFilterChain(FilterChain filterChain) {12 this.filterChain = filterChain;13 }14 15 public String getMsg() {16 return msg;17 }18 19 public void setMsg(String msg) {20 this.msg = msg;21 }22 23 public String process() {24 return filterChain.doFilter(msg);25 }26 }
测试类
1 package com.alvin; 2 3 public class Main { 4 public static void main(String[] args) { 5 String msg = "<script>,:),kdkjfejfid, 敏感词:)"; 6 MesProcessor mp = new MesProcessor(); 7 mp.setMsg(msg); 8 FilterChain filterChain = new FilterChain(); 9 filterChain.addFilter(new HtmlFilter());10 filterChain.addFilter(new WordsFilter());11 mp.setFilterChain(filterChain);12 String result = mp.process();13 System.out.println(result);14 }15 }
测试结果:[script],:),kdkjfejfid, 河蟹:)
设计模式之——责任链模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。