ActionInvocation.java
package com.test.interceptor;
import java.util.ArrayList;
import java.util.List;
public class ActionInvocation {
List<Interceptor> intercepters = new ArrayList<Interceptor>();
int index = -1;
Action a = new Action();
public ActionInvocation(){
this.intercepters.add(new FirstInterceptor());
this.intercepters.add(new SecondInterceptor());
}
public void invoke(){
index++;
if(index >= this.intercepters.size()){
a.execute();
}else{
this.intercepters.get(index).intercept(this);
}
}
}
Interceptor.java
package com.test.interceptor;
public interface Interceptor {
public void intercept(ActionInvocation invocation);
}
FirstInterceptor.java
package com.test.interceptor;
public class FirstInterceptor implements Interceptor {
@Override
public void intercept(ActionInvocation invocation) {
System.out.println(1);
invocation.invoke();
System.out.println(-1);
}
}
SecondInterceptor.java
package com.test.interceptor;
public class SecondInterceptor implements Interceptor {
@Override
public void intercept(ActionInvocation invocation) {
System.out.println(2);
invocation.invoke();
System.out.println(-2);
}
}
Action.java
package com.test.interceptor;
public class Action {
public void execute(){
System.out.println("execute");
}
}
Main.java
package com.test.interceptor;
public class Main {
public static void main(String[] args) {
new ActionInvocation().invoke();
}
}