首页 > 解决方案 > 需要澄清干净的架构和存储库模式

问题描述

在过去的 4 周里,我一直在阅读有关此主题的材料,我在 github 上看到了许多实现,到目前为止,我了解其目的,但是我在实现方面遇到了一些问题。

让我们从用例开始。如果我是正确的而不是usecase保存业务逻辑并执行诸如验证或获取一些数据repositories并返回一些业务对象之类的操作。

repository您在应用程序业务层定义接口,并在interface-adapters层中实现它。

repository实现存在并需要某种从外部注入的interface-adapters数据源(数据源在哪里),我应该在这一层实现数据源的接口吗?

对我来说最令人困惑的是models和 DTO。究竟是models什么,目的是什么以及为什么我要使用 a model,我使用 mongoose 作为 ORM,所以,我假设您的架构是 a model

这意味着,model只是您从外部获取的一些数据(例如:Api、DB 等),然后将此数据映射到实体,如果是,那么我应该在哪里进行映射(在存储库或用例或数据源中)?

我还没有接触过控制器、演示者或视图模型,因为我已经很困惑了。

标签: typescriptrepository-patternclean-architecture

解决方案


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


推荐阅读