结构图:
Intercept Interface :
public interface Intercept {
public void intercept (ActionInvocation invocation) ;
}
First Intercept Implement:
public class FirstIntercept implements Intercept {
public void intercept(ActionInvocation invocation) {
System.out.println("begin First Intercept to do somethin");
try {
invocation.invoke() ;
} finally {}
System.out.println("end First Intercept to do somethin");
}
}
Second Intercept Implement :
public class SecondIntercept implements Intercept {
public void intercept(ActionInvocation invocation) {
System.out.println("begin Second Intercept to do somethin");
try {
invocation.invoke() ;
} finally {}
System.out.println("end Second Intercept to do somethin");
}
}
Third InterceptImplement :
public class ThirdIntercept implements Intercept {
public void intercept(ActionInvocation invocation) {
System.out.println("begin Third Intercept to do somethin");
try {
invocation.invoke() ;
} finally {}
System.out.println("end Third Intercept to do somethin");
}
}
ActionInvocation :
import java.util.ArrayList;
import java.util.List;
public class ActionInvocation {
private static int index = 0 ;
private List<Intercept> intercepts = new ArrayList<Intercept> ();
/*
* 这里用构造加载拦截器
*/
public ActionInvocation () {
intercepts.add(new FirstIntercept()) ;
intercepts.add(new SecondIntercept()) ;
intercepts.add(new ThirdIntercept()) ;
}
public void invoke () {
if (index < intercepts.size()) {
intercepts.get(index++).intercept(this); ;
}
}
}
执行结果:
begin First Intercept to do somethin
begin Second Intercept to do somethin
begin Third Intercept to do somethin
end Third Intercept to do somethin
end Second Intercept to do somethin
end First Intercept to do somethin
流程图: