Negli ultimi due anni ho scritto un programma per l'ordinamento e l'elaborazione delle immagini per il nostro laboratorio, utilizzando JavaFX.
La classe Project
contiene tutte le informazioni: raccolte di Images
, Tags
, Labels
ecc., nonché le impostazioni di elaborazione. Ogni Image
contiene nomefile, metadati, raccolte di Tags
e Labels
ecc.
Quasi tutti i valori sono osservabili ( SimpleObjectProperty
ecc.) e sono associati direttamente alla vista. Anche Project
viene mantenuto su disco come file XML utilizzando le annotazioni pertinenti.
Questo crea problemi quando viene caricato un nuovo Project
- come aggiornare i binding?
Il mio metodo attuale è deserializzare un nuovo oggetto Project
, quindi aggiornare tutti i binding nel controller per puntare alle nuove collezioni e proprietà. In JavaFX è più semplice fare associazioni nel codice, quindi ho già un metodo per creare i bind e quindi lo eseguo di nuovo.
Ma ultimamente ho pensato che sarebbe stato meglio usare una classe ausiliaria per serializzare / deserializzare Project
e quindi copiare ogni proprietà / raccolta in un singolo oggetto Project
che viene istanziato una sola volta.
Esiste una best practice per questo in Java? Ci sono dei vantaggi per entrambi i metodi? Una preoccupazione nel metodo corrente Project
cambia e quindi ogni riferimento ad esso deve essere aggiornato. Per ovviare a questo ho creato una classe Supervisor
con un metodo getProject
e invece di passarla.
Presto dovrò fare la stessa cosa in un'applicazione WPF. Esistono differenze tra l'associazione XAML WPF e l'associazione JavaFX che rende un metodo più adatto?