如何将一个函数的验证包装在另一个函数中?

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)

我确信人们使用某种模式或惯例。谢谢。

CKi*_*ing 2

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)