Question

Lors de l'affichage du projet d'Evans sur le projet échantillon de DDD, je remarque que dans l'entité Cargo, Evans utilise tracknumber qui est un objet de valeur. Pourquoi il ne choisit pas string tracknumber plaine choisit plutôt objet de valeur d'identité? Voici extrait 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;
  }
Était-ce utile?

La solution

Un couple de choses qui réaliserait:

  • encapsule la logique que l'ID de suivi ne doit pas être null
  • encapsule la logique que l'ID de suivi ne devrait pas changer une fois ensemble.

Avec une chaîne de caractères, l'objet Cargo devrait être au courant de ces règles. En utilisant l'approche de l'objet Valeur signifie que le TrackingID maintient ces règles sur lui-même.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top