public abstract class AbsXXXValidator { protected AbsXXXValidator nextValidator; public void setNextValidator ( AbsXXXValidator absValidator) { this . nextValidator = absValidator; } public abstract Result isValidatePass ( ) ; public Result nextValidator ( ) { if ( nextValidator == null ) { return succeedResult ( ) ; } return nextValidator. isValidatePass ( ) ; }
}
public class XXXValidatorChainBuilder { private AbsXXXValidator firstValidator; private AbsXXXValidator lastValidator; public XXXValidatorChainBuilder setValidator ( AbsXXXValidator absValidator) { if ( firstValidator == null ) { firstValidator = absValidator; lastValidator = absValidator; return this ; } lastValidator. setNextValidator ( absValidator) ; lastValidator = absValidator; return this ; } public AbsXXXValidator build ( ) { return firstValidator; }
}