Main public class Main { public static void main(String[] args) { new ActionInvocation().invoke(); } } ActionInvocation public class ActionInvocation { private int index = -1; private Action action = new Action(); private List<Interceptor> interceptors = new ArrayList<Interceptor>(); public ActionInvocation() { this.interceptors.add(new FirstInterceptor()); this.interceptors.add(new SecondInterceptor()); } public void invoke() { index++; if (index >= this.interceptors.size()) { action.execute(); } else { this.interceptors.get(index).intercept(this); } } } Action public class Action { public void execute() { System.out.println("********execute********"); } } Interceptor public interface Interceptor { public void intercept(ActionInvocation invocation); } FirstInterceptor public class FirstInterceptor implements Interceptor { public void intercept(ActionInvocation invocation) { System.out.println("********1********"); invocation.invoke(); System.out.println("********-1********"); } } SecondInterceptor public class SecondInterceptor implements Interceptor { public void intercept(ActionInvocation invocation) { System.out.println("********2********"); invocation.invoke(); System.out.println("********-2********"); } } 输出 ********1******** ********2******** ********execute******** ********-2******** ********-1********