Ho fatto questa domanda su SO, ma qualcuno ha sottolineato che sarei stato meglio qui. Probabilmente ha ragione. Quindi eccomi!
Quindi volevo solo un'opinione. Ho 2 modi diversi per affrontare il problema. Va bene, quindi ho un sistema che voglio progettare per il futuro. Ho alcuni tipi di oggetti che prendono come parametri un oggetto che implementa un'interfaccia che può contenere un altro oggetto Implementare un'altra interfaccia e così via.
In questo modo ho
A(InterfaceB B)->B(InterfaceC C)->C(InterfaceD D) ...
Finché non arrivo ad un punto in cui l'oggetto non ne contiene un altro. Ogni interfaccia implementa un'interfaccia comune. Quindi ho
Parent->InterfaceB --- Parent->InterfaceC --- Parent->InterfaceD
Ma InterfaceD non implementa necessariamente InterfaceB. Poiché un'interfaccia non ha una sola implementazione, ho più alberi possibili.
A(InterfaceB B)->B(InterfaceC C)->C(InterfaceD D)->...
e
A(InterfaceB B)->B(InterfaceC Y)->Y(InterfaceZ Z)->...
Quindi la mia domanda è questa: se voglio gestire gli alberi possibili, è meglio usare il reflection per generare gli alberi possibili all'avvio? O sarebbe meglio tenere gli alberi diversi in un file xml che analizzerei all'avvio? Devo tenere a mente che questi tipi di interfaccia e le loro implementazioni continueranno ad arrivare. Quindi ogni volta che aggiungo un nuovo tipo, deve essere gestito. So che entrambe le soluzioni funzioneranno. La mia domanda è più la seguente: quale sarebbe l'approccio migliore per orientare il sistema verso il futuro.
Per aggiungere un contesto alla situazione, ecco un esempio di caso
Tutte queste interfacce espongono un adattatore. Ogni adattatore potrebbe averne bisogno di un altro per svolgere il proprio compito. Ad esempio, ho un adattatore che analizza alcuni dati. Ma poi questi dati devono essere comunicati con un obiettivo remoto. Per fare ciò può usare ethernet, porta seriale, ecc ... Quindi potrei avere un parser generico che prende un comunicatore generico. Questa è una delle diverse possibilità.
Se hai bisogno di chiarimenti, non esitare!