微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

域驱动设计 – DDD:在哪里创建实体对象?

我有三个必须互动的实体:User,SupportTicket和PhoneConversation.当有人打电话请求帮助时,用户应该为他分配一个SupportTicket,并将一个PhoneConversation分配给Ticked描述该呼叫.

我的问题是:在什么实体中我应该创建一个新的SupportTicket和PhoneConversation的方法CreatePhonesupportTicket(),将它们相互关联,最后将SupportTicket与用户联系起来?

我猜它不能在用户身上,因为这会违反SRP(用户会做更多的事情).但是该方法本身不止一件事,它应该创建一个SupportTicket和一个PhoneConversation.这是一种情况,当一个服务是一个更好的解决方案然后将方法放在实体上?谢谢你的帮助!

解决方法

使用new运算符如果它符合逻辑的其余部分则没有任何问题.如果只有一种SupportTicket,请使用新的SupportTicket(currentUser)创建一个.或者,如果依赖是另一种方式,则向用户添加CreateSupportTicket()方法并在那里调用新的SupportTicket().反过来,SupportTicket构造函数可以创建一个新的PhoneConversation().如果您稍后决定使用某种工厂,则可以随时重构代码.但在此之前,请选择您能想象到的最简单的解决方案.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐