Gui*_*rum 5 java validation design-patterns return function
举例来说,您有一堆函数都需要检查登录验证。首先,它看起来像:
public Response createThing(){
if(!validLogin(httpRequest, uriInfo)){
return Response.status(Response.Status.FORBIDDEN);
}
//Do the function
}
Run Code Online (Sandbox Code Playgroud)
第一个代码块存在于每个服务调用的顶部,但我不知道如何将其包装到另一个函数中,因为它包含一个 return 语句。我想要类似于以下内容的东西:
public Response createThing(){
validateLogin(httpRequest, uriInfo);
//Do the function
}
Run Code Online (Sandbox Code Playgroud)
或者
public Response createThing(){
//Implied check somehow?
//Do the function
}
Run Code Online (Sandbox Code Playgroud)
我确信人们使用某种模式或惯例。谢谢。
从Java 8开始,函数被视为一等公民。这允许您以前所未有的方式重用代码。您可以创建一个包含固定部分和可变部分的模板方法,如下所示:
public <T,U,R extends Response> R doSomething(final BiFunction<T,U,R> funct,T input1,U input2){
if(validLogin(input1, input2)) {//fixed part
return funct.apply(input1,input2);//variable part
}
}
Run Code Online (Sandbox Code Playgroud)