1 public class Main {
2 public static void main(String[] args) {
3 Msg msg = new Msg();
4 msg.setMsg("要处理的数据<xxxJava技术决定一切>,996");
5 FilterChain filterChain = new FilterChain();
6 filterChain.add(new HtmlFilter()).add(new SensitiveFilter());
7 FilterChain filterChain2 = new FilterChain();
8 filterChain2.add(new MyLoveFilter());
9 filterChain.add(filterChain2);
10 filterChain.doFilter(msg);
11 //将来还要加各种过滤动作...所有代码都写一起,特别乱
12 //过滤器就不错,哪部分变化就封装哪部分,封装变化
13
14 System.out.println(msg);
15 }
16 public static class MyFilter implements Filter{
17
18 @Override
19 public boolean doFilter(Msg msg) {
20 msg.setMsg(msg.getMsg().replace("Java","PHP"));
21 return true;
22 }
23 }
24 public static class FilterChain implements Filter{
25 List<Filter> list = new ArrayList<>();
26 public FilterChain add(Filter filter){
27 list.add(filter);
28 return this;
29 }
30 public boolean doFilter(Msg msg){
31 for (Filter filter : list) {
32 if(!filter.doFilter(msg)){
33 return false;
34 }
35 }
36 return true;
37 }
38 }
39 public interface Filter{
40 public boolean doFilter(Msg msg);
41 }
42 public static class HtmlFilter implements Filter{
43
44
45 @Override
46 public boolean doFilter(Msg msg) {
47 msg.setMsg(msg.getMsg().replace("<","["));
48 msg.setMsg(msg.getMsg().replace(">","]"));
49 return true;
50 }
51 }
52 public static class SensitiveFilter implements Filter{
53
54
55 @Override
56 public boolean doFilter(Msg msg) {
57 msg.setMsg(msg.getMsg().replace("996","955"));
58 return false;
59 }
60 }
61 public static class Msg{
62 public String msg;
63 public String name;
64 public String getMsg() {
65 return msg;
66 }
67
68 public void setMsg(String msg) {
69 this.msg = msg;
70 }
71
72 public String getName() {
73 return name;
74 }
75
76 public void setName(String name) {
77 this.name = name;
78 }
79
80 @Override
81 public String toString() {
82 return "Msg{" +
83 "msg='" + msg + '\'' +
84 ", name='" + name + '\'' +
85 '}';
86 }
87 }
88 }