业务层的很多校验,要返回到接口层,目前返回值是 1 ,2 ,3 ,4 ,5 ,对应业务层的这个接口执行的五种结果,有什么更好的处理方式吗?
1
chendy 2023-06-30 15:38:50 +08:00
用异常 + 全局处理
特殊场景就做一个特殊的异常特殊处理 再特殊的场景就异常里存结构化的错误信息特殊处理 当然直接返回数字也挺好的🥺 |
2
DTCPSS 2023-06-30 15:45:59 +08:00
其实适合用 Record
|
3
ql562482472 2023-06-30 15:46:02 +08:00
这个有点像风控的提示 多个控制点并发校验的场景
|
4
DTCPSS 2023-06-30 16:04:30 +08:00
整个花活,用 模式匹配 + Record 模仿 Rust 的枚举:
// Service 里: public record ServiceResult(); public record SuccessServiceResult(string Title, DateTime CreatedTime, int LikeCount) : ServiceResult; public record FailedServiceResult(string ErrorMessage) : ServiceResult; public ServiceResult ServiceMethod() { // 业务逻辑 } // Controller 里: public void ControllerMethod() { ServiceResult serviceResult = ServiceMethod(); serviceResult switch { SuccessServiceResult successResult => 处理成功的情况(), FailedServiceResult failedResult => 处理失败的情况(), }; } |
5
sunxiaping521 2023-06-30 16:27:55 +08:00
简单点的话,Java 17 提供了 switch 表达式,复杂点,可以使用策略模式
|
6
qua 2023-07-01 10:35:57 +08:00
sealed classes
|