Stavo cercando di trovare esempi per l'utilizzo di fabbriche DDD e mi sono imbattuto nella domanda di spedizione del libro di Eric Evans.
Tuttavia, quando ho controllato il BookingService il codice per creare un Cargo
ha avuto questo commento alla riga 37 :
34 public TrackingId bookNewCargo(final UnLocode originUnLocode,
35 final UnLocode destinationUnLocode,
36 final Date arrivalDeadline) {
37 // TODO modeling this as a cargo factory might be suitable
38 final TrackingId trackingId = cargoRepository.nextTrackingId();
39 final Location origin = locationRepository.find(originUnLocode);
40 final Location destination = locationRepository.find(destinationUnLocode);
41 final RouteSpecification routeSpecification = new RouteSpecification(origin, destination, arrivalDeadline);
42
43 final Cargo cargo = new Cargo(trackingId, routeSpecification);
44
45 cargoRepository.store(cargo);
46 logger.info("Booked new cargo with tracking id " + cargo.trackingId().idString());
47
48 return cargo.trackingId();
49 }
Come dovrebbe essere utilizzata la fabbrica DDD qui? Quali parti devono essere refactored esattamente per utilizzare la fabbrica in questi pezzi di codice?