Pregunta

Al ver el proyecto de Evans en el proyecto DDD de muestra, noto que en el Cargo Entidad, Evans usa TrackNumber, que es un objeto de valor. Por qué no elige a Plain string tracknumber en su lugar, elige el objeto de valor para la identidad? Aquí está el fragmento de Evans:

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;
  }
¿Fue útil?

Solución

Un par de cosas que lograrían:

  • Encapsula la lógica de que la ID de seguimiento no debe ser nula
  • Encapsula la lógica de que la ID de seguimiento no debe cambiar una vez establecida.

Con una cadena simple, el objeto de carga tendría que ser consciente de estas reglas. El uso del enfoque de objeto de valor significa que el seguimiento mantiene estas reglas sobre sí misma.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top