编程内功修炼之设计模式—责任链模式

在设计模式不清楚的情况下,学习各种框架不仅难学懂,也难理解,即使理解也不够深刻。

为了走更远的路,从基础抓起,每天坚持前进一小步!

虽然即将毕业,虽然路途很远,没有梦想何必远方!

package edu.designpattern.chainofresponsibility;

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

import org.junit.Test;
/**
 * 责任链设计模式
 * 模型练习
 * 
 * @author helingfeng
 * 编写日期:2015/04/28
 **/

//过滤器接口
interface Filter {
	public String doFilter(String result);
}
/**责任链设计模式**/
public class FilterChain implements Filter{

	//责任链上所有过滤器
	List<Filter> filters = new ArrayList<Filter>();
	
	//利用责任链进行操作
	public String doFilter(String str) {
		String result = str;
		for(Filter filter : filters){
			result = filter.doFilter(result);
		}
		return result;
	}
	
	//责任链进行初始化
	public FilterChain addFilter(Filter f){
		this.filters.add(f);
		return this;
	}
	
	//测试
	@Test
	public void test(){
		String str = "<a>我是异常信息</a>";
		FilterChain chain = new FilterChain();
		HTMLFilter htmlFilter = new HTMLFilter();
		KeysFilter keysFilter = new KeysFilter();
		chain.addFilter(htmlFilter).addFilter(keysFilter);
		System.out.println(chain.doFilter(str));
	}
}
/**HTML 过滤器实现
 * 
 * 将含<>标签信息转化为[]
 * **/
class HTMLFilter implements Filter{

	//对接口进行实现
	public String doFilter(String result) {
		result = result.replaceAll("<", "[").replaceAll(">", "]");
		return result;
	}
}
/**KEY 关键字过滤器实现
 * 将设定的关键字进行更替
 **/
class KeysFilter implements Filter{
	
	String[] keys = {"错误","异常","失败"}; 
	
	//对接口进行实现
	public String doFilter(String result) {
		for(String key : keys){
			result = result.replaceAll(key, "正常");
		}
		return result;
	}
}

  

posted @ 2015-04-28 00:18  helingfeng  阅读(266)  评论(0编辑  收藏  举报