Frage

Beim Betrachten von Evans 'Projekt zum Beispiel -DDD -Projekt stelle ich das in der Cargo Entität, Evans verwendet TrackNumber, was ein Wertobjekt ist. Warum er nicht einfach gewählt hat string tracknumber Wählt stattdessen Wertobjekt für Identität? Hier ist Snippet von 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;
  }
War es hilfreich?

Lösung

Ein paar Dinge, die erreichen würden:

  • Fasst die Logik zusammen, dass die Tracking -ID nicht null sein sollte
  • Kapuliert die Logik, dass sich die Tracking -ID nach dem Einstellen nicht ändern sollte.

Mit einer einfachen Schnur müsste sich das Frachtobjekt dieser Regeln bewusst sein. Die Verwendung des Wertungsobjektansatzes bedeutet, dass das TrackingID diese Regeln über sich selbst beibehält.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top