DDD:状态 - 值对象或实体



我有状态

 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密钥的实体而言,这不是不寻常的要求)

相关内容

  • 没有找到相关文章

最新更新