Ci sono dei reali vantaggi nell'usare le interfacce su classi astratte in un modello di dominio? Qualcuno ha esperienza sull'uso di interfacce in un modello di dominio in un progetto reale?
Da un punto di vista tecnico, DDD definisce stereotipi come aggregato , valore , repository , ecc. I repository quindi, ad esempio, possono essere definiti come interfacce come ICustomerRepository
che vengono poi implementate dall'infrastruttura. Questo è un caso d'uso valido per un'interfaccia, poiché possono esserci più implementazioni del repository (mock, falsi, ecc.). Tuttavia, questo è un motivo completamente tecnico per utilizzarlo: qui l'interfaccia viene utilizzata solo per separare il repository specifico del dominio dall'implementazione tecnica.
Ma per quanto riguarda le interfacce puramente specifiche del dominio? Qualcuno ha mai incontrato una situazione in cui sia l'interfaccia che la sua realizzazione non fossero tecniche? In particolare, quali ragioni potrebbero parlare per scegliere un'interfaccia su una classe astratta quando si implementa un tipo specifico del dominio? Forse quando è implicata l'ereditarietà multipla, sarebbe necessario, ma quanto è probabile e potrebbe essere considerato un buon progetto?