【发布时间】:2016-09-15 01:28:18
【问题描述】:
我正在尝试为我的应用程序模块实现 DDD 架构,但遇到了在它们之间存储相似(依赖)结构的问题。
在第一个包中,我存储与实体人员相关的所有内容:服务(存储库)、控制器、模型等...
在第二个包中,我存储了与另一个实体 Apartments 相关的所有内容:服务(存储库)、控制器、模型等......
每个Apartment可以包含多个Tenants,这些Tenants以与People相同的结构存储在数据库中。
一些Apartment包服务应该能够调用get/update/...等方法Tenants。我很乐意不重新实现这些操作并从 People 包 PeopleService 中的实现中使用它们,但该服务返回 People 实体,而不是租户。
我是否应该在 Apartment 包中创建 People 的附加结构(复制粘贴整个源代码),将其命名为 Tenant 并转换返回PeopleService 的种类呢?
或者有其他方法吗?
另外,我应该在哪里存储具体实体的服务/存储库接口(与 CRUD 类似的方法的接口)? PeopleService 接口应该同时在 People 和 Apartment 包中吗?
谢谢。
【问题讨论】:
-
DDD 不是架构。 DDD 与 CRUD 无关。如果您可以跨实体和服务复制粘贴代码,那么您正在处理 CRUD,并且您根本不需要 DDD 和域模型。获取 CRUD 应用程序生成器并完成此操作。
标签: go interface architecture domain-driven-design