需要澄清干净的架构和存储库模式

时间:2019-12-20 18:14:06

标签: typescript repository-pattern clean-architecture

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

让我们从用例开始。如果我是正确的,那么usecase拥有业务逻辑并执行诸如通过repositories验证或获取某些数据并返回一些业务对象的操作。

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

repository实现驻留在interface-adapters中,并且需要您从外部注入的某种数据源(数据源位于何处),我应该在此层中实现数据源的接口吗?

对我来说,最令人困惑的是models和DTO。 models的确切含义是什么,目的是什么,为什么要使用model,我将猫鼬用作ORM,因此,我假设您的架构是model

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

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

1 个答案:

答案 0 :(得分:0)

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