Sono stagista estivo in una piccola azienda incaricata di sviluppare un prototipo per un microservizio di collegamento (a contatto). Dopo aver fatto qualche ricerca su Google, capisco che il primo passo dovrebbe essere la pulizia / normalizzazione dei miei dati di input prima di poter iniziare in modo efficace il collegamento dei contatti. (Sto pensando di mappare Ben a Benedetto, ecc.)
Ora il componente principale del mio servizio è RecordLinkingManager, ad esempio. In seguito, vorrò essere in grado di testare l'efficacia della mia soluzione combinando diversi meccanismi di pulizia / collegamento. Per questo mi è venuto in mente il seguente prototipo di interfaccia:
var myManager = new RecordLinkingManager();
myManager.addCleanupAgent(myCleanupAgent1);
myManager.addCleanupAgent(myCleanupAgent2);
myManager.addLinkingAgent(myLinkingAgent1, priorityOfMyLinkingAgent1);
myManager.addLinkingAgent(myLinkingAgent2, priorityOfMyLinkingAgent2);
return myManager.linkRecords(myRecords); // this executes the cleanup agents first, then the linking agents
Qui i secondi parametri per aggiungere LinkingAgent sono gli indici di certezza / priorità dei diversi agenti. Questo indica quanto affidabile / affidabile sia l'output di questi agenti.
Come ho detto, sono solo uno stagista estivo, quindi ho una minima esperienza con la progettazione del software. È una configurazione ragionevole? Come miglioreresti su questo design?