Использование объекта значения в качестве идентификатора в сущности

StackOverflow https://stackoverflow.com/questions/4832101

Вопрос

Во время просмотра проекта Evans на образце DDD -проекта я замечаю, что в Cargo Entity, Эванс использует TrackNumber, который является объектом значения. Почему он не выбирал простых string tracknumber Вместо этого выбирает объект значения для идентичности? Вот фрагмент от Эванса:

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;
  }
Это было полезно?

Решение

Пара вещей, которые достигли бы:

  • Инкапсулирует логику, что идентификатор отслеживания не должен быть нулевым
  • Инкапсулирует логику, которую идентификатор отслеживания не должен меняться после установки.

С простой строкой грузовой объект должен знать об этих правилах. Использование подхода объекта Value означает, что TrackingID поддерживает эти правила о себе.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top