过去4周,我一直在阅读有关该主题的材料,我在github上看到了许多实现,到目前为止,我已经了解了目的,但是实现方面存在一些问题。
让我们从用例开始。如果我是正确的,那么usecase
拥有业务逻辑并执行诸如通过repositories
验证或获取某些数据并返回一些业务对象的操作。
您在应用程序业务层中为repository
定义接口,并在interface-adapters
层中实现它。
repository
实现驻留在interface-adapters
中,并且需要您从外部注入的某种数据源(数据源位于何处),我应该在此层中实现数据源的接口吗?
对我来说,最令人困惑的是models
和DTO。 models
的确切含义是什么,目的是什么,为什么要使用model
,我将猫鼬用作ORM,因此,我假设您的架构是model
?
这意味着model
只是您从外部获取的一些数据(例如:Api,DB等),然后将该数据映射到实体,如果是这样,那么我应该在哪里进行映射(在存储库,用例或数据源中)?
我还没有接触过控制器,演示者或视图模型,因为我已经很困惑了。
答案 0 :(得分:0)
在纯粹“干净”的架构中,每一层都应该使用自己的模型。因此,您的 ORM 模式模型与您的实体或 DTO 不同(但它们会从一个映射到另一个)。从模式模型到实体的映射应该发生在存储库中,因为它们返回实体。在您需要 DTO 的地方,可能是为了演示,您可以在该层上进行映射。