Domanda

Durante la visualizzazione di progetto Evans' sul progetto di DDD di esempio, ho notato che nell'entità Cargo, Evans usa numero di traccia che è un oggetto di valore. Perché non ha scelto string tracknumber normale invece sceglie oggetto valore per l'identità? Qui è frammento da 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;
  }
È stato utile?

Soluzione

Un paio di cose che avrebbe raggiunto:

  • incapsula la logica che il monitoraggio ID non dovrebbe essere nullo
  • incapsula la logica che il monitoraggio ID non dovrebbe cambiare una volta insieme.

Con una stringa di pianura, l'oggetto merci avrebbe dovuto essere a conoscenza di queste regole. Utilizzando l'approccio Object valore significa la TrackingId mantiene queste regole su se stessa.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top