我有状态
public final class Status {
private int code;
public Status(int code) {
this.code = code;
}
public int getCode() {
return code;
}
}
似乎状态可以是值对象,因为具有相同代码的两个状态是相同的状态,但是状态可以由管理员添加,状态列表应该显示在用户界面中;
要在用户界面中提供状态列表及其名称,我还有其他包装类
public final class AvailableStatuses {
private Status status;
private String name;
...
}
public AvailableStatusesRepository {
...
}
您对此设计有何看法?我应该调整它并将状态作为实体并将名称字段放入其中吗?
答案 0 :(得分:2)
您当前设计的简单答案是AvailableStatus
是一个实体,而Status
是一个值对象(VO),它基本上是AvailableStatus
'的包装器。身份(它的代码)。
您的模型可能很好,但您应该意识到的一件事是您被迫提出不同的名称,一个描述实体,另一个描述VO。
那是因为你可能缺乏适当的有界上下文(BC)。您可以拥有维护/管理/设置BC,其中Status
将是一个实体,而它将是任何下游环境中的VO。
答案 1 :(得分:0)
这应该是一个值对象,因为它被用作模型中元素的描述符。它们由它们的属性定义,它们的属性(即状态)决定了它们的身份。
答案 2 :(得分:0)
状态是一个值对象,应该包括名称而不仅仅是ID。这两个字段在使用上下文中都是不可变的(即,没有具有Status字段的项可以更改Status对象)。包装类是不必要的。
在您的管理应用程序的上下文中,状态可被视为实体,但需要注意的是,ID无法更改(对于具有合成ID密钥的实体而言,这不是一个特殊要求)