我有三个必须交互的实体:User
, SupportTicket
和 PhoneConversation
.当有人打电话请求帮助时,用户应该有一个 SupportTicket 分配给他,一个 PhoneConversation 分配给描述调用的 Ticked。
我的问题是:我应该将方法放在哪个实体中 CreatePhoneSupportTicket()
创建一个新的 SupportTicket 和一个 PhoneConversation,将它们相互关联,最后将 SupportTicket 与用户关联?
我猜它不能在用户身上,因为这会违反 SRP(用户会做更多的事情)。但是该方法本身不止一件事,它应该创建一个 SupportTicket 和一个 PhoneConversation。在这种情况下,服务是比将方法放在实体上更好的解决方案吗?谢谢你的帮助!
最佳答案
如果 new 运算符适合您的其余逻辑,则使用它没有任何问题。如果只有一种 SupportTicket,请使用 new SupportTicket(currentUser)
创建一个。或者,如果依赖是另一种方式,请添加 CreateSupportTicket()
方法给用户并调用 new SupportTicket()
那里。 SupportTicket 构造函数反过来可以创建一个 new PhoneConversation()
.如果您稍后决定应该使用某种工厂,您可以随时重构您的代码。但在那之前,请寻找您能想象到的最简单的解决方案。
关于domain-driven-design - DDD : Where to create entity objects?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3000429/