用例 vs 域 vs 存储库:业务逻辑应该驻留在何处?

Use cases vs Domain vs Repositories: Where should the business logic reside?

提问人:Bitwise DEVS 提问时间:8/2/2023 最后编辑:Bitwise DEVS 更新时间:8/5/2023 访问量:216

问:

在将 Clean Architecture 用于多个 Android 项目时,我总是纠结于放置业务逻辑的最佳位置。根据我的理解,领域模型包含一些业务逻辑和价值对象,可以解决格式化或编码等问题,另一方面,用例提供了“尖叫架构”概念,使操作和流程在业务角度上更具可读性,但抽象。还有一些存储库负责传输/接收或存储数据,但其中也可以包含业务逻辑。

我的问题是:

  1. 用例是否也可以有业务逻辑?如果是,它可以有什么样的业务逻辑?
  2. 除了发送/接收或存储 DTO 之外,存储库通常具有什么样的业务逻辑?
模式 领域驱动设计 干净架构 用例

评论


答:

2赞 VoiceOfUnreason 8/3/2023 #1

用例是否也可以有业务逻辑?

是的,罗伯特·马丁在 2012 年说。

它可以有什么样的业务逻辑?

“这一层中的软件包含特定于应用程序的业务规则。”请注意,特定于应用程序与“企业范围”不同。

什么样的业务逻辑存储库

我不期望存储库中的业务逻辑。

“你的商业规则对外部世界一无所知。

如果在存储库实现中包含业务逻辑是一种正常/常见/理想的模式,那将是一个奇怪的陈述。在大多数情况下,存储库是我们用来移动信息的管道。

评论

0赞 Bitwise DEVS 8/3/2023
每次我遇到与清洁架构相关的文档时,他们总是提到存储库也迎合了业务逻辑,例如: developer.android.com/topic/architecture/data-layer 或者这里的“包含”一词是不同的上下文?
1赞 VoiceOfUnreason 8/3/2023
或者也许是“业务逻辑”的不同想法,或者也许以“干净的架构”方式做对他们不起作用,所以他们适应了。这就是为什么我更愿意更多地重视“主要”来源的原因,对于干净的架构来说,这将是罗伯特·马丁的博客和书籍。