我在构建一个值对象时有一个简单的问题,在该对象中有一个具有特定类型的值对象集合,您如何构造该对象?
举一个例子,假设你有picture
多个dimensions
选项1:
Class Picture implements valueObject{
public function __construct(array $dimensions){
foreach($dimensions as $dimension){
// check if instance of `dimension` value object
}
}
}
选项2:
Class Picture implements valueObject{
public function __construct(DimensionCollection $dimensions){
}
}
Class DimensionCollection implements Traversable{
public function add(Dimension $dimension){
// add to array
}
}
选项二off-course似乎更合乎逻辑但是还有另一种模式,最好从DDD中采取这种做法吗?
答案 0 :(得分:0)
如果你的Picture VO拥有一个集合..然后我将它命名为Pictures或PictureCollection,因为它将由其他Picture对象组成。 (正如您对尺寸所做的那样)。
虽然这是一个复习问题,valueObject接口应该命名为“ValueObjetct”,大写字母为“V”。
我认为您的域名需要进行一些重组。如果图片的尺寸大于尺寸,则“s”应该是由尺寸VO组成的组。