i.v*_*van 2 architecture domain-driven-design interface go
我正在尝试为我的应用程序模块实现 DDD 架构,但遇到了在它们之间存储类似(依赖)结构的问题。
在第一个包中,我存储与实体People相关的所有内容:服务(存储库)、控制器、模型等...
在第二个包中,我存储与另一个实体公寓相关的所有内容:服务(存储库)、控制器、模型等...
每个Apartment可以包含多个Tenants,它们以与People相同的结构存储在数据库中。
一些公寓包服务应该能够调用诸如 get/update/... Tenants 之类的方法。我很乐意不重新实现这些操作并从People包PeopleService 中的实现中使用它们,但该服务返回People实体,而不是Tenant。
我是否应该创建People 的附加结构(复制粘贴整个源代码)到Apartment包中,将其称为Tenant并将PeopleService 的返回类型转换为它?
或者有其他方法可以做到吗?
另外,我应该在哪里存储具体实体的服务/存储库(与 CRUD 类方法的接口)的接口?接口PeopleService应该在People和Apartment包中吗?
谢谢。
可能有不同的方法,坦率地说,这个问题可能应该以过于广泛和基于意见的方式结束。
我可能会这样做:
在一个单独的包中解耦所有链接的模型models。
对 People->Tenants 使用组合,例如
type Person { Name string }
type Tenant struct { Person }
tenants,该包将使用人员和公寓的模型和服务进行操作。