首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用委托来分离层

使用委托来分离层
EN

Stack Overflow用户
提问于 2016-12-15 09:02:20
回答 1查看 295关注 0票数 1

我们重构了一个Java应用程序,其中的代码被溢出,甚至没有遵循最基本的原则或模式。我们设法提取了以下层:

  • 数据层
  • 存储库层,包含各种db实体的命令和查询存储库。
  • 服务层,它只与存储库一起工作,也可以具有业务逻辑。
  • 一个服务编排层,它进行服务组合以实现应用程序的业务(不使用存储库)
  • 一个API和一个用于显示视图的控制器层,它应该只与业务流程服务一起工作

在多种情况下,控制器或API需要从服务(服务层)调用方法,但考虑到我们希望控制器只与业务流程服务一起工作,我们被迫创建一个业务流程服务,它只会将方法调用委托给实际的服务。

这是一种正确的方法吗,还是我们应该删除中间的人(编排),而它除了授权什么也不做?

向你问好,克里斯蒂安。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-15 10:54:19

如果是我的代码,我更愿意遵循标准--即使编排层有时只是直接委托给服务层。如果业务流程发生变化,希望将该更改隔离到业务流程层,使调用代码不受更改的影响。此外,如果您试图围绕代码结构强制执行标准,请保持一致,以免不良实践再次出现。如果有时直接调用服务层,而有时则通过编排层调用,则可能会导致开发人员对何时使用哪种方法感到困惑。

最后,回顾一下您的操作的粒度--某些方法调用是否确实存在于完全隔离状态,还是它们构成了更大的业务流程的一部分?我同意您的分层方案--您的表示层应该知道如何调用业务流程(由业务流程层公开),但它应该不了解执行该流程所涉及的细节(由服务层公开)。即使业务流程只包含一个步骤,它仍然是一个业务流程,可以由业务流程层公开--它恰好是一个非常简单的过程。

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

https://stackoverflow.com/questions/41160103

复制
相关文章

相似问题

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