Supponiamo di avere un oggetto dominio, che rappresenta un cliente con un elenco di offerte.
Dire che voglio aggiungere una raccolta di offerte. Credo di avere due opzioni:
Opzione 1
Avere l'oggetto dominio caclculate le offerte e aggiungerle:
public IEnumerable<IProduct> GetEligibleOffers(IOfferCalculator offerCalculator, IList<IProduct> products)
{
return offerCalculator.CalculateEligibility(Gender, Expenditure, products);
}
//Refactored this method.
public void AssignOffers(IList<IProduct> eligibleProducts)
{
foreach (var product in products)
{
_assignedProducts.Add(product);
}
}
Opzione 2
Chiedi al Servizio applicazioni di calcolare le offerte e passarle all'oggetto dominio uno alla volta. Pertanto l'oggetto dominio sarà simile a questo:
public IEnumerable<IProduct> GetEligibleOffers(IOfferCalculator offerCalculator, IList<IProduct> products)
{
return offerCalculator.CalculateEligibility(Gender, Expenditure, products);
}
//Refactored this method to only accept one product
public void AddOffer(IProduct eligibleProduct)
{
_assignedProducts.Add(eligibleProduct);
}
In questo caso; il servizio applicativo ottiene le offerte idonee (utilizzando: CalculateEligibility) e quindi le passa una alla volta all'oggetto dominio (Customer.AssignOffer).
Sto cercando di decidere quale approccio utilizzare (mi rendo conto che entrambi gli approcci funzioneranno). L'opzione uno sembra la più appropriata. Tuttavia, ogni esempio che riesco a trovare online sembra utilizzare l'opzione 2, ad es. questo uno e questo uno . Quindi mi chiedo se l'opzione numero due sia disapprovata per qualche motivo.