我看过一些实现了领域驱动设计(DDD)的项目,它们使用值对象来代表实体。这些值对象通常被称为EmployeeDetail
、EmployeeDescriptor
、EmployeeRecord
等。有时会包含实体ID,有时则不包含。
这是一种模式吗?如果是,它有什么名称? 使用案例有哪些? 它们是值对象、参数对象还是其他什么东西? 它们被引用于领域模型中(作为属性),还是像方法的参数和返回值一样“漂浮”在外?
更进一步地...
我想知道是否可以将任何聚合定义为ID + BODY (详情、描述等) + METHODS (行为)
。
public class Employee {
private EmployeeID id;
private EmployeeDetail detail; //the "body"
}
我能否像这样设计我的聚合对象,以避免在使用此类对象时出现代码重复?
这样做的直接优势在于避免在聚合工厂方法中使用太多参数的方法。
public class Employee {
...
public static Employee from(EmployeeID id, EmployeeDetail detail){...};
}
代替
public class Employee {
...
public static Employee from(EmployeeID id, + 10 Value Objects here){...};
}
你认为怎么样?