java设计模式--责任链(一)

本文是翻译马士兵设计模式视频资料

责任链适应图

java设计模式--责任链(一)_第1张图片

那条线代表正常处理业务类

整个过程的目的就是处理一个字符串 包括:脚本处理 、 敏感字符处理 、表情字符处理 MsgProcessor里面封装了这个字符串

package com.hfview.designMode.zerenlian.common;

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);


    }
}

其中FilterChain是封装很多对类处理的处理类
对于各种处理类应该抽象一个接口

package com.hfview.designMode.zerenlian.common;

public interface Filter {
    String doFilter(String str);
}

第一个处理(过滤脚本处理)

package com.hfview.designMode.zerenlian.common;

public class HTMLFilter implements Filter {

    public String doFilter(String str) {
        //process the html tag <>
        String r = str.replace('<', '[')
                   .replace('>', ']');
        return r;
    }

}

第二个处理敏感字段处理

package com.hfview.designMode.zerenlian.common;

public class SesitiveFilter implements Filter {

    public String doFilter(String str) {
        //process the sensitive words
        String r = str.replace("被就业", "就业")
             .replace("敏感", "");

        return r;
    }

}

第三个处理(表情符号处理)

package com.hfview.designMode.zerenlian.common;

public class FaceFilter implements Filter {

    public String doFilter(String str) {
        return str.replace(":)", "^V^");
    }

}

如果处理链不包括其他处理链FilterChain

package com.hfview.designMode.zerenlian.common;

import java.util.ArrayList;
import java.util.List;

public class FilterChain {
    List filters = new ArrayList();

    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.hfview.designMode.zerenlian.common;

public class Main {

    /**
     * @param args
     */
    public static void main(String[] args) {
        String msg = "大家好:),
                    
                    

你可能感兴趣的:(java设计模式)