Utilizzando oggetto valore come identificatore nel soggetto
-
27-10-2019 - |
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;
}
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