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

Java 在MVC模式中处理简单的业务流程?,java,model-view-controller,spring-mvc,Java,Model View Controller,Spring Mvc,我使用的是SpringMVC,我的控制器大多包含太多的逻辑。当3-5个服务bean构成业务流程,并在一个处理程序中调用它们时,会包含一些验证,并且会导致一些if-else条件的肯定或否定响应 一种可能的解决方案是拥有一个包含对服务bean及其方法的公共接口的所有引用的facade。这使它变得更简单,它也可以在MVC模式中构成异常边界,但业务流程仍然有一些逻辑和验证,并且仍然在处理程序方法中处理 我应该创造这样的东西吗 BusinessProcess { processOrder() {

我使用的是SpringMVC,我的控制器大多包含太多的逻辑。当3-5个服务bean构成业务流程,并在一个处理程序中调用它们时,会包含一些验证,并且会导致一些if-else条件的肯定或否定响应

一种可能的解决方案是拥有一个包含对服务bean及其方法的公共接口的所有引用的facade。这使它变得更简单,它也可以在MVC模式中构成异常边界,但业务流程仍然有一些逻辑和验证,并且仍然在处理程序方法中处理

我应该创造这样的东西吗

BusinessProcess {

processOrder() {
   serviceBeanA.call();
   result = serviceBeanB.call();
   validator.validate(result); // throw exception
   serviceBeanC.call(result);
 }
}
在我的处理程序中只使用BusinessProcessBean?捕获异常或返回值将说明什么是错误的,以及响应中应该包含什么。否则processOrder方法的内容将位于处理程序中


这是正确的方法吗?如果是的话,这个模式叫什么。

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

处理订单是处理程序感兴趣的逻辑抽象。OrderProcessorBean或BusinessProcessImpl如何实际实现这一点是一个实现细节,对处理程序/控制器是隐藏的

没有这样的bean,您可以在某个控制器中编写一个方法processOrder,该控制器具有处理处理处理顺序细节的服务bean的依赖项和引用。正如你所注意到的,这不是一个好的设计


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

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

处理订单是处理程序感兴趣的逻辑抽象。OrderProcessorBean或BusinessProcessImpl如何实际实现这一点是一个实现细节,对处理程序/控制器是隐藏的

没有这样的bean,您可以在某个控制器中编写一个方法processOrder,该控制器具有处理处理处理顺序细节的服务bean的依赖项和引用。正如你所注意到的,这不是一个好的设计

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