Indipendentemente dal pattern che usi qui, la cosa fondamentale è decidere cosa intendi modellare: qualunque sia il file o ciò di cui l'applicazione ha bisogno.
Ci sono casi d'uso per entrambi. Un editor di testo può caricare un file .json o .csv, ma mentre può mostrare il tuo campo arbitrario e il suo valore, non ha idea di cosa fare con esso oltre a mostrarlo a te. L'editor di testo rigurgita solo il file senza comprenderlo. La tua applicazione potrebbe fare lo stesso. In questa situazione non si fa alcuna logica contro il campo. Rileva il formato del file e presenta il file in base al formato e la strategia funziona correttamente se vuoi presentare diversi formati in modo diverso. Qui si lascia che l'utente si occupi della comprensione del campo arbitrario.
Se hai bisogno di utilizzare il campo arbitrario in alcune logiche di business, allora ti trovi in una situazione diversa. Ti aspetti che alcune qualifiche esistano, che la logica vada avanti e che non esistano modi per affrontarle. Hai ancora bisogno di rilevare e gestire il formato del file, e la strategia funziona ancora per questo, ma ora hai bisogno di costruire una struttura dati accessibile che capisca questo campo arbitrario e, indipendentemente dal formato del file, funzioni allo stesso modo per tutto il business logica che stai utilizzando contro questo campo arbitrario.
Potrebbe essere utile capire che è raro avere solo un campo in questo caso successivo. Di solito ne trovi alcuni che possono essere raggruppati per formare un'idea coerente. Potrebbero diversi di questi gruppi in un unico file. Questi raggruppamenti diventano strutture dati, oggetti di trasferimento dati, POJO. Se hanno un'identità che va oltre i propri valori, diventano entità.
Ottenere i dati dal file in memoria non è banale. A volte è semplice perché il file segue da vicino quello che ti serve in memoria, ma non è sempre così e alcune conversioni devono essere fatte. Quando si verifica questo problema con i database, viene chiamato disadattamento dell'impedenza relazionale all'oggetto .
Indipendentemente da tutto questo, quando ti trovi nella situazione in cui il tuo codice deve comprendere il campo arbitrario, è meglio iniziare il tuo progetto ignorando il file e concentrandoti sulle esigenze delle tue app. Supponiamo che otterrai il campo in qualche modo se esiste. Esprimi che ne hai bisogno lasciandolo passare da qualcosa. Usalo comunque è necessario.
Solo una volta che hai finito scrivi il codice che va, lo trova e lo passa dove è necessario. Una buona tecnica per questo è l'iniezione di dipendenza. Ciò ti consente di separare l'utilizzo del campo arbitrario dalla costruzione di qualsiasi struttura dati che utilizzi per modellarlo.