Verwenden von Wertobjekten als Kennung in der Entität
-
27-10-2019 - |
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;
}
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