Comprendo che gli oggetti esterni a un aggregato non devono contenere riferimenti a entità e oggetti valore appartenenti all'aggregato. La mia domanda se questo si applica anche al servizio applicativo che espone i casi d'uso al codice cliente.
Ad esempio, se ho un ordine aggregato e Order Line è un oggetto valore all'interno dell'aggregato, quale sarebbe un approccio più consigliato:
Opzione 1: referenziazione di oggetti figlio dal servizio dell'applicazione
class OrderApplicationService
# code ommited
def removeOrderLine(order_id, order_line_product_id)
order = OrdersRepository.find(order_id)
order_line = order.find_line_by_product(order_line_product_id)
order.remove_line(order_line)
OrdersRepository.save(order)
end
Opzione 2: utilizzo di valori primitivi invece di oggetti secondari
class OrderApplicationService
# code ommited
def removeOrderLine(order_id, order_line_product_id)
order = OrdersRepository.find(order_id)
order.remove_line_by_product(order_line_product_id)
OrdersRepository.save(order)
end
end