在示例 DDD 项目中查看 Evans 的项目时,我注意到在Cargo
实体中,Evans 使用了 tracknumber,它是一个值对象。为什么他没有选择plain string tracknumber
,而是选择value object作为身份?这是埃文斯的片段:
public class Cargo implements Entity<Cargo> {
private TrackingId trackingId
}
public final class TrackingId implements ValueObject<TrackingId> {
private String id;
/**
* Constructor.
*
* @param id Id string.
*/
public TrackingId(final String id) {
Validate.notNull(id);
this.id = id;
}