六边形架构,我是否通过在用例之间重用代码来违反其原则?

Hexagonal Architecture, do I violate its principles by reusing code between usecases?

您好,感谢您花时间阅读我的问题:)

我有几个用例需要从 s3 下载和上传文件。为此,我创建了一个端口和一个在这些用例之间共享的 S3 适配器。不知何故,我觉得这是一个糟糕的主意,但我不想重复代码。

这是否意味着我已经秃头设计了我的用例?

这里正确的做法是什么?

如果您有多个用例,那么您应该有多个 root aggregates,每个用例一个。如果你有多个根聚合,你应该有多个 端口 ,每个端口处理一个用例的持久性。由于所有用例都使用相同的 S3 持久性后端,您可以实现一个 single adapter,实现所有端口,并处理所有用例的持久性.

这允许您稍后在需要时将任何用例移动到另一个持久性后端,而不会破坏现有代码。您可以通过为新的后端实现一个新的持久化适配器,并将您的依赖注入配置为使用这个新的适配器而不是以前的那个端口来实现这一点。