清洁架构,用例依赖

Posted

技术标签:

【中文标题】清洁架构,用例依赖【英文标题】:The Clean Architecture, usecase dependencies 【发布时间】:2017-03-20 09:53:24 【问题描述】:

最近,我找到了 The Clean Architecture Bob 叔叔的帖子。但是当我尝试将它应用到当前项目时,当一个用例需要依赖另一个用例时,我陷入了困境。

例如,我的领域模型是目标和任务。一个目标可以有多个任务。当我更新一个任务时,它需要更新其父目标的信息。换句话说,UpdateTask 用例将有UpdateGoal 用例作为依赖项。我不确定这是否可以接受,或者我们是否应该避免用例级别的依赖。

【问题讨论】:

【参考方案1】:

用例与应用程序的功能相关。一般来说,当我们需要从一个用例调用到另一个用例时,有些东西是行不通的。

当你孤立地更新一个目标时,它和你通过一个任务的改变来更新它的场景是不一样的,事实上,它肯定不是所有的数据都被更新了,而是一部分。

当然,您将不得不使用目标存储库和目标实体,但这是完全不同的场景。在您的情况下,您没有复制逻辑,仅调用存储库或实体,将来节省代码行可能会很昂贵。

简而言之,用例之间存在依赖并不是一个好主意。

【讨论】:

我不完全同意你的说法,这是我的用例(没有双关语?)。我有一个为特定用户生成 AuthSession 的用例,该用例由应用程序中的管理员角色用户调用。我还有一个用例,它使用电子邮件/密码对用户进行身份验证,而不是重新创建为用户生成 AuthSession 的逻辑,而是调用另一个用例。现在,这是我的解决方案,小团队在实施干净架构时可以明智地偏离,但我确信大型团队对干净架构的指导原则更加严格。

以上是关于清洁架构,用例依赖的主要内容,如果未能解决你的问题,请参考以下文章

清洁架构中的“用例交互器”和“服务”有啥区别?

清洁架构、用例和实体

清洁架构用例/领域层的相关性

清洁架构 - Robert Martin - 如何连接用例

清洁架构 - 在使用存储库模式和用例刷新的同时获取缓存数据

清洁架构,数据请求协调器,演示者或用例/交互器?