如果需要业务层返回执行结果,怎么返回值?

2023-06-30 15:32:26 +08:00
 gzk329

业务层的很多校验,要返回到接口层,目前返回值是 1 ,2 ,3 ,4 ,5 ,对应业务层的这个接口执行的五种结果,有什么更好的处理方式吗?

1288 次点击
所在节点    Java
6 条回复
chendy
2023-06-30 15:38:50 +08:00
用异常 + 全局处理
特殊场景就做一个特殊的异常特殊处理
再特殊的场景就异常里存结构化的错误信息特殊处理

当然直接返回数字也挺好的🥺
DTCPSS
2023-06-30 15:45:59 +08:00
其实适合用 Record
ql562482472
2023-06-30 15:46:02 +08:00
这个有点像风控的提示 多个控制点并发校验的场景
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 => 处理失败的情况(),
};
}
sunxiaping521
2023-06-30 16:27:55 +08:00
简单点的话,Java 17 提供了 switch 表达式,复杂点,可以使用策略模式
qua
2023-07-01 10:35:57 +08:00
sealed classes

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/953028

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX