責任チェーンモード(二)



 
Filter抽象クラスの定義
package com.hb.patten.chainofrespon;

/**
 *  Filter , 
 * @author  
 */
public abstract class Filter {
	/**
	 *  
	 */
	public String request;
	/**
	 *  
	 * @return 
	 */
	public abstract boolean handler();
	
}

 
Filterの実装クラス
package com.hb.patten.chainofrespon;

/**
 *  is, 
 * @author hbiao68
 *
 */
public class IsFilter extends Filter {

	/**
	 * Filter 
	 */
	Filter superFilter;

	/**
	 *  Filter
	 * @param filter
	 */
	public IsFilter(Filter filter) {
		this.superFilter = filter;
		if (null == filter.request) {
			super.request = "";
		}
	}

	/**
	 *  is  NULLis
	 */
	@Override
	public boolean handler() {
		if (this.superFilter.handler()) {
			// super.request 
			super.request = superFilter.request.replace("is", "NULLis");
			System.out.println("request : " + super.request);
		}
		return true;
	}

}

 
package com.hb.patten.chainofrespon;

/**
 *  the, NULLthe
 * @author hbiao68
 *
 */
public class TheFilter extends Filter {

	Filter superFilter;
	
	public TheFilter(Filter filter) {
		this.superFilter = filter;
		
		if(null == filter.request){
			super.request = "";
		}
	}
	
	/**
	 *  
	 */
	@Override
	public boolean handler() {
		if (this.superFilter.handler()) {
			super.request = superFilter.request.replace("the", "NULLthe");
			System.out.println("request : " + super.request);
		}
		return true;
	}
	

}

 
package com.hb.patten.chainofrespon;

/**
 * @author hbiao68
 * @version
 *  
 */
public class BaseFilter extends Filter {

	@Override
	public boolean handler() {
		System.out.println("BaseFilter  !");
		System.out.println("request : " + super.request);
		return true;
	}
	
	public BaseFilter(String request){
		super.request = request;
	}

}

 
テスト実装
package com.hb.patten.chainofrespon;

/**
 *  
 * @author hbiao68
 *
 */
public class TestFilter {

	public static void main(String[] args) {
		
		String request = "this is my big dog,the old boy";
		//BaseFilter request request, Filter 
		new TheFilter(new IsFilter(new BaseFilter(request))).handler();
	}

}