我有很多方法,每种方法我都要进行验证。目前,我的代码是这样的,并且运行良好。
@Service
public class UserService {
@Autowired
private UserValidation userValidation;
public BaseResponse<AuthenticationResponse> login(UserLoginRequest request) {
List<ErrorCode> errors = userValidation.validateUserLoginRequest(request);
if (!errors.isEmpty()) return Utils.constructFailedBaseResponse(errors);
// ...
}
public BaseResponse<AuthenticationResponse> register(UserRegisterRequest request) {
List<ErrorCode> errors = userValidation.validateUserRegisterRequest(request);
if (!errors.isEmpty()) return Utils.constructFailedBaseResponse(errors);
// ...
}
public BaseResponse<User> view(String username) {
List<ErrorCode> errors = userValidation.validateUserUsernameExists(username);
if (!errors.isEmpty()) return Utils.constructFailedBaseResponse(errors);
// ...
}
public BaseResponse<Void> edit(UserEditRequest request) {
List<ErrorCode> errors = userValidation.validateUserEditRequest(request);
if (!errors.isEmpty()) return Utils.constructFailedBaseResponse(errors);
// ...
}
}
然而,我很好奇有没有一种方法可以重构代码,这样我就不需要在每个方法上重复if语句了。下面的代码是我试图实现的,但我不知道如何实现。知道如何将上面的代码转换为下面的代码吗?另一种重构解决方案非常受欢迎。
(或者我应该坚持上面的代码吗?为什么?)
@Service
public class UserService {
@Autowired
private UserValidation userValidation;
public BaseResponse<AuthenticationResponse> login(UserLoginRequest request) {
userValidation.validateUserLoginRequest(request);
// ...
}
public BaseResponse<AuthenticationResponse> register(UserRegisterRequest request) {
userValidation.validateUserRegisterRequest(request);
// ...
}
public BaseResponse<User> view(String username) {
userValidation.validateUserUsernameExists(username);
// ...
}
public BaseResponse<Void> edit(UserEditRequest request) {
userValidation.validateUserEditRequest(request);
// ...
}
}