构建器中的值对象

时间:2014-08-26 16:36:05

标签: php domain-driven-design entities

当我编写构建器时,如果我构建的实体包含值对象,那么处理它的最佳方法是什么?

我是否应该使用类似于With_MyvalueObject(IMyValueObject $ vo)的方法并简单地设置VO - 显然这种技术要求值对象首先存在,所以我可以将它作为参数传递。或者我应该创建基本的,并在构建器中为值创建值接收值?

1 个答案:

答案 0 :(得分:0)

无论哪种方式都没问题。我个人将价值对象传递给工厂/建筑商,因为它更简洁。

无论如何,我正在尝试尽可能接近UL(无处不在的语言)映射事物,所以如果它不是构建器,而是在示例方法user.commentOnPost中,那么我传递基本值在用户评论某事之前,comment没有任何意义。所以不要这样做:

comment = Comment(text, author, post)
commentRepository.save(comment)

我做:

user.commentOnPost(text, post)

在内部,它以与上面相同的方式创建注释,但它是在用户实际评论时创建的,而不是之前创建的,因此它更有意义。