【发布时间】:2020-04-13 05:31:18
【问题描述】:
在过去的 4 周里,我一直在阅读有关此主题的材料,我在 github 上看到了许多实现,到目前为止,我了解其目的,但是我在实现方面遇到了一些问题。
让我们从用例开始。如果我是正确的,usecase 持有业务逻辑并执行操作,例如通过 repositories 验证或获取一些数据并返回一些业务对象。
在应用业务层为repository定义接口,在interface-adapters层实现。
repository 实现存在于interface-adapters 中,需要某种从外部注入的数据源(数据源在哪里),我应该在这一层实现数据源接口吗?
对我来说最令人困惑的是models 和 DTO。 models 到底是什么,目的是什么以及为什么我要使用 model,我使用猫鼬作为 ORM,所以,我假设您的架构是 model?
这意味着,model 只是您从外部获取的一些数据(例如:Api、DB 等),然后您将此数据映射到实体,如果是,那么我应该在哪里进行映射(在存储库中或用例或数据源)?
我还没有接触过控制器、演示者或视图模型,因为我已经很困惑了。
【问题讨论】:
-
模型、DTO 和视图模型实际上都是相同的东西——表示结构化数据的方式。通常,“模型”指的是数据库模型(模式),“DTO”是用于在服务或端点之间传递数据的数据传输对象(WebAPI 将 DTO 返回给调用者),视图模型用于前端end 绑定到视图(例如 MVVM 模式)。当然,这是所有主观和不同的公司/博客/文档都使用自己的定义,但这应该是一个很好的经验法则。
标签: typescript repository-pattern clean-architecture