当我编写构建器时,如果我构建的实体包含值对象,那么处理它的最佳方法是什么?
我是否应该使用类似于With_MyvalueObject(IMyValueObject $ vo)的方法并简单地设置VO - 显然这种技术要求值对象首先存在,所以我可以将它作为参数传递。或者我应该创建基本的,并在构建器中为值创建值接收值?
答案 0 :(得分:0)
无论哪种方式都没问题。我个人将价值对象传递给工厂/建筑商,因为它更简洁。
无论如何,我正在尝试尽可能接近UL(无处不在的语言)映射事物,所以如果它不是构建器,而是在示例方法user.commentOnPost
中,那么我传递基本值在用户评论某事之前,comment
没有任何意义。所以不要这样做:
comment = Comment(text, author, post)
commentRepository.save(comment)
我做:
user.commentOnPost(text, post)
在内部,它以与上面相同的方式创建注释,但它是在用户实际评论时创建的,而不是之前创建的,因此它更有意义。