domain-driven-design - DDD : Where to create entity objects?

标签 domain-driven-design entities

我有三个必须交互的实体:User , SupportTicketPhoneConversation .当有人打电话请求帮助时,用户应该有一个 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/

相关文章:

c# - 可以在一个 WPF 应用程序中保留不同的有界上下文 (BC) 吗?

domain-driven-design - 领域事件与事件溯源和 CQRS 的因果关系

c# - LINQ .Take() 返回的元素多于请求的元素

java - 自动将 `insertable = false, updatable = false` 添加到 Netbeans 生成的实体

domain-driven-design - 订单和库存 DDD - 应该在哪里处理分配/保留?

domain-driven-design - 工作单元模式中的回滚方法的意图是什么?

mvvm - 多个 ViewModel 请求相同的域对象,我应该给它们相同/不同的实例吗?

sql - Symfony 2 : Generate SQL from specific entity

wpf - IsDirty() 刷新新的 Collection 实体

validation - Symfony2 针对整个实体的验证