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

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

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

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

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;

	}

}

  

你可能感兴趣的:(责任链模式)