首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在MVC模式中处理简单的业务流程?

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

Stack Overflow用户
提问于 2011-08-01 15:28:46
回答 1查看 321关注 0票数 2

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

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

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

代码语言:javascript
复制
BusinessProcess {

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

并且在我的处理程序中只使用BusinessProcess bean?捕获异常或返回值将说明错误所在以及响应中应包含的内容。否则,processOrder方法的内容将在处理程序中。

这条路对吗?如果是这样的话,这种模式是如何命名的。

EN

回答 1

Stack Overflow用户

发布于 2011-08-03 01:07:16

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

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

如果没有这样的bean,您可以在一些控制器中编写一个方法processOrder,并且该控制器具有对处理处理订单细节的服务bean的依赖关系和引用。正如您所注意到的,这不是一个好的设计。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6895362

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档