需要澄清关于清洁架构和仓储模式的问题。

3
我在过去的4周中一直阅读与该主题相关的材料,我看到了许多在Github上的实现,目前我理解了其目的,但我在实现时遇到了一些问题。
让我们从用例开始。如果我没错的话,usecase保存业务逻辑并执行操作,例如通过repositories验证或获取某些数据,并返回一些业务对象。
您在应用程序业务层中为repository定义接口,并在interface-adapters层中实现它。 repository实现位于interface-adapters中,需要一些来自外部注入的数据源(数据源在哪里),我应该在此层中为数据源实现接口吗?
对我来说最困惑的是models和DTO。什么是model,它的目的是什么,为什么我要使用model?我正在使用Mongoose作为ORM,所以我假设您的架构是一个model
这意味着model只是您从外部获取的一些数据(例如:API,DB等),然后将此数据映射到实体,如果是这样,那么我应该在哪里进行映射(在repository,usecase还是datasource中)?
我还没有涉及控制器,展示者或视图模型,因为我已经很困惑了。

1
模型(Models),数据传输对象(DTO)和视图模型(View-Models)实际上是相同的东西 - 表示结构化数据的方式。通常,“模型”是指数据库模型(模式),“DTO”是用于在服务或端点之间传递数据的数据传输对象(WebAPI将DTO返回给调用方),而“视图模型”则用于前端绑定到视图(例如MVVM模式)。当然,这是主观的,不同的公司/博客/文档使用自己的定义,但这应该是一个好的参考。 - Adam H
1个回答

1
在一个纯粹的“干净”架构中,每个层应该使用自己的模型。因此,你的ORM模式模型与实体或DTO不同(但它们将从一个映射到另一个)。从模式模型到实体的映射应该发生在存储库中,因为它们返回实体。而当你需要DTO时,可能是为了展示,你可以在那一层上进行映射。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接