Consideriamo la prossima situazione:
- Abbiamo un modulo A che ha una classe Crt570 destinata a interagire con un dispositivo.
- Abbiamo un modulo B che usa Crt570 nella classe chiamata M100Communicator.
- Abbiamo due applicazioni C e D e entrambe vogliono utilizzare il modulo B.
- L'applicazione D vuole usare B, ma non vuole usare Crt570 e il modulo di riferimento A, quindi.
"Modulo" qui significa dll.
Quindi abbiamo deciso di estrarre un'interfaccia da Crt570 e denominarla ICrt570. Ma cosa fare adesso? È molto strano spostare ICrt570 nel modulo di dominio (chiamiamolo modulo E) o altrove perché dopo che Crt570 deve fare riferimento al modulo che conterrà ICrt570!
Come risolvere il puzzle?
Aggiorna Per rendere la domanda più chiara per i lettori in futuro, aggiungerò un po 'più dettagli.
Il modulo A è la DLL che non contiene nient'altro che la classe Crt570 (con la sua infrastruttura). Quindi questa dll è dedicata alla gestione di un dispositivo assolutamente, niente di più.
Il modulo B è la DLL che contiene modelli specifici per diverse applicazioni nel nostro dominio. Almeno 3 applicazioni vogliono utilizzare questo modulo e, naturalmente, non vogliono estrarre le DLL di cui non hanno bisogno.
Uno dei modelli che le app C e D vogliono utilizzare è il modello M100Communicator. E, in particolare, questa classe (M100Communicator) dipende dal modulo A (classe Crt570).
Il modulo E di cui ho parlato è un modulo di dominio. Contiene molte classi e interfacce, quindi il modulo A non vuole usarlo, apparentemente.