Vedi la domanda qui: link
Il consenso generale è che i modelli di dominio non dovrebbero contenere interfacce. Ora guarda qui: link e in particolare questo codice:
public Offer AssignOffer(OfferType offerType, IOfferValueCalculator valueCalculator)
{
DateTime dateExpiring = offerType.CalculateExpirationDate();
int value = valueCalculator.CalculateValue(this, offerType);
var offer = new Offer(this, offerType, dateExpiring, value);
_assignedOffers.Add(offer);
NumberOfActiveOffers++;
return offer;
}
L'autore se questo blog scrive molto su DDD.
Si noti che qui viene iniettata un'interfaccia nel metodo anziché un tipo concreto, cioè IOfferValueCalculator implementa OfferValueCalculator.
Sto parlando dal punto di vista di un purista del DDD. È accettabile che le entità di dominio implementino le interfacce? Se la risposta è sì, allora in quali circostanze sarebbe accettabile iniettare un IOfferCalculator in un'entità di dominio: Membro?
Ancora una volta mi rendo conto che l'approccio DDD non è una taglia unica e che un modello di dominio anemico è adatto in molti casi. Sto solo cercando di migliorare la mia conoscenza di questo specifico settore.