Ho un'applicazione Java che ha bisogno di elaborare alcuni dati. I dati iniziano nel formato A.
L'applicazione è composta da un numero di moduli che sono ciascuno in grado di elaborare i dati. Ma non tutti i moduli supportano lo stesso tipo di dati dell'input e dell'output. Il modulo 1 accetta i dati nel formato A e li emette nel formato B. Il modulo 2 accetta i dati nel formato B e li emette nel formato C. Il modulo 3 prende i dati nel formato A o nel formato C e emette il formato B. Un altro prende B o C e restituisce lo stesso formato in cui ha ricevuto i dati. E così via, hai avuto l'idea.
E come se questa situazione non fosse già abbastanza brutta, ci sono molti moduli, ciascuno con i propri formati di input e output. Alcuni corrispondono, altri no. I moduli possono essere eseguiti in qualsiasi ordine e l'ordine viene fornito in fase di runtime dall'utente.
Ho bisogno di assicurarmi che i moduli siano in un ordine in cui ogni entrata e uscita corrispondono. Come posso farlo? C'è forse qualche schema di progettazione che non conosco che risolva questo?
Fondamentalmente, ho bisogno di un modo per recuperare il formato di input e output di un modulo, confrontarlo con un altro e, talvolta, lanciare un oggetto sul tipo che ho scoperto.
Ho avuto un paio di idee come recuperare il parametro e restituire i tipi tramite reflection, ma alcuni formati di dati coinvolgono generiche annidate che vengono cancellate in fase di compilazione. E altre cose che mi sono venute in mente non avrebbero aggirato il fatto che probabilmente avrei dovuto capire a che tipo dovevo eseguire il cast in runtime se le avessi applicate.
Tutti i pensieri e le indicazioni sarebbero apprezzati.