设计模式_责任链模式(ChainOfResponsibility)

package com.chainOfResponsibility;

/**
 * 字符串过滤器接口
 * @author 83998
 *
 */
public interface Filter {
	void doFilter(String str, FilterChain chain);
}

package com.chainOfResponsibility;

/**
 * 过滤链类
 * @author 83998
 *
 */
public class FilterChain {
	//过滤器数组
	private Filter[] filters;
	//执行索引
	private int position;

	public FilterChain(Filter[] filters) {
		super();
		this.filters = filters;
	}

	public void doFilter(String str) {
		if (position >= filters.length) {
			System.out.println("complete:" + str);
			return;
		} else {
			filters[position++].doFilter(str, this);
		}
	}

	public Filter[] getFilters() {
		return filters;
	}

	public void setFilters(Filter[] filters) {
		this.filters = filters;
	}

	public int getPosition() {
		return position;
	}

	public void setPosition(int position) {
		this.position = position;
	}

}

package com.chainOfResponsibility;

/**
 * 字符串过滤数字类
 * @author 83998
 *
 */
public class TrimNum implements Filter {

	@Override
	public void doFilter(String str, FilterChain chain) {
		chain.doFilter(str.replaceAll("\\d", ""));
	}

}

package com.chainOfResponsibility;

/**
 * 字符串过滤空格类
 * @author 83998
 *
 */
public class TrimSpaceFilter implements Filter {

	@Override
	public void doFilter(String str, FilterChain chain) {
		if (str.trim().length() == 0) {
			return;
		}
		chain.doFilter(str.trim());
	}

}

package com.chainOfResponsibility;

/**
 * 测试类
 * @author 83998
 *
 */
public class Test {
	public static void main(String[] args) {
		Filter[] filters = { new TrimSpaceFilter(), new TrimNum() };
		FilterChain chain = new FilterChain(filters);

		chain.doFilter("   ggesgd  3r32bfbreb  ");
	}
}

发布了340 篇原创文章 · 获赞 23 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/Chill_Lyn/article/details/103646567
今日推荐