gpt4 book ai didi

java - 在 MVC 模式中处理简单的业务流程?

转载 作者:行者123 更新时间:2023-11-29 09:20:22 25 4
gpt4 key购买 nike

我正在使用 spring-mvc,我的 Controller 大多包含太多逻辑。当 3 - 5 个服务 bean 构成业务流程并在一个处理程序中调用它们时,就会包含一些验证,这会导致一些带有肯定或否定响应的 if-else 条件。

一个可能的解决方案是拥有一个外观,其中包含对服务 bean 的所有引用及其方法的公共(public)接口(interface)。这样比较简单,也可以构成MVC模式中的异常边界,但是,业务流程还是有一些逻辑和验证的,还是在handler方法中处理。

我应该创建这样的东西吗? :

BusinessProcess {

processOrder() {
serviceBeanA.call();
result = serviceBeanB.call();
validator.validate(result); // throw exception
serviceBeanC.call(result);
}
}

并在我的处理程序中仅使用 BusinessProcess bean?捕获异常或返回值会说明哪里出了问题以及要包含在响应中的内容。否则 processOrder 方法的内容将在处理程序中。

这是正确的方法吗?如果是这样,如何调用这种模式。

最佳答案

如果我理解正确的话,你很可能应该按照你的建议去做。我认为这种“模式”没有名字,也不需要。既然你看起来不确定,这就是为什么我认为你在考虑正确的事情。

处理订单是您的处理程序感兴趣的逻辑抽象。OrderProcessorBean(或 BusinessProcessImpl)如何实际完成此操作是一个实现细节,并且对处理程序/ Controller 隐藏。

如果没有这样的 bean,您可以在某个 Controller 中编写一个方法 processOrder,并且该 Controller 具有对处理处理订单细节的服务 bean 的依赖和引用。如您所见,这不是好的设计。

处理代码允许异常飞出并且不关心调用者如何处理它们似乎也是正确的。也许一个事务被回滚,也许一些包含错误消息的 HTML 被服务给最终用户,但是负责处理订单的代码(业务逻辑)不应该知道有诸如 Spring MVC 或 HTML 之类的东西。

关于java - 在 MVC 模式中处理简单的业务流程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6895362/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com