一、流程图
二、代码
package com. jt. interceptor ;
import java. util. ArrayList ;
import java. util. List ;
interface Interceptor {
boolean doPre ( ) ;
void doPost ( ) ;
}
interface Handler {
void doHandle ( ) ;
}
class ExecutionChain {
private List < Interceptor > interceptors;
private Handler handler;
public ExecutionChain ( List < Interceptor > interceptors, Handler handler) {
this . interceptors = interceptors;
this . handler = handler;
}
public void execute ( ) {
for ( int i= 0 ; i< interceptors. size ( ) ; i++ )
interceptors. get ( i) . doPre ( ) ;
handler. doHandle ( ) ;
for ( int i= interceptors. size ( ) - 1 ; i>= 0 ; i-- )
interceptors. get ( i) . doPost ( ) ;
}
}
public class ExecutionChainTests {
public static void main ( String [ ] args) {
List < Interceptor > interceptors= new ArrayList < > ( ) ;
interceptors. add ( new Interceptor ( ) {
@Override
public boolean doPre ( ) {
System . out. println ( "doPre1" ) ;
return false ;
}
@Override
public void doPost ( ) {
System . out. println ( "doPost1" ) ;
}
} ) ;
interceptors. add ( new Interceptor ( ) {
@Override
public boolean doPre ( ) {
System . out. println ( "doPre2" ) ;
return false ;
}
@Override
public void doPost ( ) {
System . out. println ( "doPost2" ) ;
}
} ) ;
Handler handler= ( ) -> {
System . out. println ( "执行任务..." ) ;
} ;
ExecutionChain chain= new ExecutionChain ( interceptors, handler) ;
chain. execute ( ) ;
}
}
三、效果