一个Interceptor接口
public interface Interceptor {
void intercept(ActionInvocation invocation);
}
一个ActionInvocation类用于调用拦截器
/**
* 保存着 很多interceptor
* @author Administrator
*
*/
public class ActionInvocation {
List<Interceptor> interceptors = new ArrayList<Interceptor>();
public ActionInvocation(){
interceptors.add(new ParamInterceptor());
interceptors.add(new ConfigInterceptor());
}
private int i = 0;
public void invoke(){
if(i< interceptors.size()){
Interceptor it = interceptors.get(i++);
//调用 方法前
it.intercept(this);
//调用 方法后
}else{
//调用Action中的execute方法
new Action().execute();
}
};
}
Interceptor的实现类
public class ConfigInterceptor implements Interceptor{
public void intercept(ActionInvocation invocation) {
System.out.println("------ConfigFilter----");
invocation.invoke();
}
}
public class ParamInterceptor implements Interceptor{
public void intercept(ActionInvocation invocation) {
System.out.println("------ParamFilter----");
invocation.invoke();
}
}
//main 来调用
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
new ActionInvocation().invoke();
}
}
输出为:
------ParamFilter----
------ConfigFilter----
----action--------
//-------------------------------------------------------------//
其实现原理就像是过滤器的实现一样