責任チェーンモード(二)
2990 ワード
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();
}
}