Golang DDD实现依赖模块

时间:2016-09-15 01:28:18

标签: go interface architecture domain-driven-design

我试图在我的应用程序模块中实现DDD架构,并且遇到在它们之间存储类似(依赖)结构的问题。

在第一个包中,我存储了与实体:服务(存储库),控制器,模型等相关的所有内容......

在第二个包中,我存储了与另一个实体公寓:服务(存储库),控制器,模型等相关的所有内容......

每个公寓可以包含多个租户,这些租户人员的结构存储在数据库中。

某些公寓套餐服务应该能够调用get / update / ... 租户等方法。我很乐意不重新实施这些操作并从人员 PeopleService 中的实现中使用它们,但该服务返回人员实体,而不是租户

我是否应该将的其他结构(复制粘贴整个源代码)创建到公寓包中,将其命名为租户并转换返回 PeopleService 的类型吗?

还是有其他办法吗?

此外,我应该在哪里存储具体实体的服务/存储库(具有类似CRUD的方法的接口)的接口?界面 PeopleService 是否应该在公寓包中?

感谢。

1 个答案:

答案 0 :(得分:3)

可能有不同的方法,坦率地说,这个问题可能应该过于宽泛和过时。基于意见。

我可能会这样做:

  1. 将所有关联的模型分离到单独的包models中。

  2. 使用人物组合 - >租户,例如 type Person { Name string } type Tenant struct { Person }

  3. 问候人们< - >公寓 - 创建一个包含模型&的模块tenants。人与人的服务公寓。