java 登陆验证失败_使用Java 8流进行快速失败的验证
java 登陸驗(yàn)證失敗
 我已經(jīng)失去了看過(guò)使用快速失敗驗(yàn)證代碼狀態(tài)的代碼的次數(shù),方法如下: 
它可以工作,但是由于有效的檢查,它是一種充滿重復(fù)性的蠻力方法。 如果您的代碼樣式對(duì)if語(yǔ)句強(qiáng)制使用大括號(hào)(為此,則為+1),則您的方法也將長(zhǎng)三倍,并且每次向驗(yàn)證器中添加新檢查時(shí)都會(huì)增長(zhǎng)。
使用Java 8的新流API,我們可以通過(guò)采取if (valid)的保護(hù)條件并制作一個(gè)通用的驗(yàn)證器來(lái)為您處理管道來(lái)改善這一點(diǎn)。
import java.util.LinkedList; import java.util.List; import java.util.function.Function;public class GenericValidator implements Function {private final List> validators = new LinkedList<>();public GenericValidator(List> validators) {this.validators.addAll(validators);}@Overridepublic Boolean apply(final T toValidate) {// a final array allows us to change the boolean value within a lambdafinal boolean[] guard = {true};return validators.stream()// only send the validator downstream if// previous validations were successful.filter(validator -> guard[0]).map(validator -> validator.apply(toValidate))// update the guard condition.map(result -> {guard[0] = result;return result;})// Logically AND the results of the applied validators.reduce(guard[0], (b1, b2) -> b1 && b2);} }使用此方法,我們可以將Person驗(yàn)證器重寫(xiě)為所需驗(yàn)證的規(guī)范。
public class PersonValidator extends GenericValidator {private static final List> VALIDATORS = new LinkedList<>();static {VALIDATORS.add(person -> person.givenName != null);VALIDATORS.add(person -> person.familyName != null);VALIDATORS.add(person -> person.age != null);VALIDATORS.add(person -> person.gender != null);// ...and many more}public PersonValidator() {super(VALIDATORS);} }PersonValidator和您所有其他的驗(yàn)證器現(xiàn)在可以完全專(zhuān)注于驗(yàn)證。 行為沒(méi)有改變-驗(yàn)證仍然很快失敗。 沒(méi)有樣板,這是一件好事。
這個(gè)正在工具箱中進(jìn)行。
翻譯自: https://www.javacodegeeks.com/2015/01/fail-fast-validations-using-java-8-streams.html
java 登陸驗(yàn)證失敗
總結(jié)
以上是生活随笔為你收集整理的java 登陆验证失败_使用Java 8流进行快速失败的验证的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
 
                            
                        - 上一篇: 电脑咋不分区呀电脑怎么不分区
- 下一篇: intext:企业_企业中的微服务:敌是
