È una buona idea creare un'interfaccia per ogni oggetto di dominio?
-
26-09-2019 - |
Domanda
Stavo solo esaminando il codice sorgente di un progetto esistente che usa nhibernate e ho scoperto che ci sono interfacce create per ciascuna classe di entità. Per esempio Icustomer per Cliente classe. Mi stavo solo chiedendo quale possa essere il vantaggio di questo modello come Icustomer contiene principalmente le proprietà e pochissimi metodi.
Soluzione
I non sarebbe dire. Interfacce comportamento separata dall'implementazione in modo che quest'ultimo possa essere scambiato senza influenzare i clienti dell'interfaccia.
Non vedo la necessità di interfacce, se gli oggetti del dominio non richiedono diverse implementazioni. Solo introdurli se sono necessarie implementazioni generazione di proxy dinamico o aspetti o mutevoli.
Altri suggerimenti
Non sono d'accordo con i commenti precedenti ... Anche se, in combinazione con modelli come Inversion of Control (IOC) e Dependency Injection fa isolare tali strati tra loro molto più facile. Ciò semplifica Unit Testing, Mocking, e può anche portare ad architetture più debolmente accoppiati. Questo può ancora essere acheived senza interfacce anche se è necessario per essere sicuri di non sigillare le vostre classi e membri make virtuali in modo da poter ancora prendere in giro poi, generare proxy intercettabili, ecc ... Infine, utilizzando le interfacce ti costringe a cadere ipotesi relative a qualsiasi una concreta attuazione e invece concentrarsi sul contratto rappresentato dalla definizione di interfaccia.