我有状态
public final class Status {
private int code;
public Status(int code) {
this.code = code;
}
public int getCode() {
return code;
}
}
看来状态可以是值对象,因为两个具有相同代码的状态是相同的状态,但是可以通过ADMINS添加状态,在用户界面中应显示状态列表;
要在用户界面中提供其名称的状态列表,我有其他包装器类
public final class AvailableStatuses {
private Status status;
private String name;
...
}
public AvailableStatusesRepository {
...
}
您如何看待这种设计?我应该将其调整并作为实体状态并在其中放置名称字段吗?
您当前设计的简单答案是AvailableStatus
是实体,而Status
是一个值对象(vo),基本上是AvailableStatus
's Identity(ITS代码)的包装器。
您的模型可能像以前一样好,但是您应该意识到的一件事是,您被迫提出不同的名称,一个描述实体,一个描述VO。
那是因为您可能缺乏适当的有界环境(BC)。您可以拥有一个维护/管理/设置BC,其中Status
将是一个实体,而在任何下游上下文中都将是VO。
应该是一个值对象,因为它用作模型中元素的描述符。它们由其属性和属性(即状态)确定其身份定义。
状态是一个值对象,不仅应包括名称。这两个字段在使用的背景下都是不可变的(即,没有具有状态字段的项目可以更改状态对象)。包装器类是不必要的。
在您的管理申请的上下文中,状态可以视为实体,并有需要更改ID的警告(对于具有合成ID密钥的实体而言,这不是不寻常的要求)