Sto sviluppando un'applicazione java per visualizzare le serie temporali. Ho bisogno (almeno) di tre viste collegate, il che significa che l'interazione con una di esse aggiorna le altre.
Le viste sono:
-
Un elenco rappresenta le serie temporali disponibili e attualmente selezionate. Le serie temporali selezionate vengono utilizzate come input per calcoli successivi. La modifica della selezione dovrebbe aggiornare le altre visualizzazioni.
-
Un grafico a linee mostra le serie temporali disponibili e selezionate. Le serie temporali dovrebbero essere selezionabili da qui facendo clic su di esse.
-
Un grafico a barre mostra i dati aggregati sulle serie temporali. Quando si effettua lo zoom in un periodo di tempo, il grafico a linee dovrebbe ingrandire lo stesso periodo (e viceversa).
Come implementarlo correttamente, dal punto di vista dell'ingegneria del software? Cioè Mi piacerebbe scrivere codice riutilizzabile e chiaro, gestibile. Quindi ho pensato al pattern MVC.
All'inizio mi piaceva l'idea di avere i tre componenti della vista che osservavano il mio modello classe e per aggiornare le visualizzazioni al momento della notifica. Ma poi, non sembrava giusto archiviare i dati relativi alla vista nel modello. Memorizzazione ad es. la selezione della serie temporale o il livello di zoom della trama nel modello rende implicazioni sulla vista che non vorrei in un modello riutilizzabile.
D'altro canto, il fatto che i controllori si osservino reciprocamente produce molte dipendenze. Quando aggiungo un'altra vista, dovrei registrare tutte le altre viste come osservatore della nuova vista e viceversa, passando attorno a molti riferimenti e introducendo dipendenze. Forse un altro "modello" che memorizza solo i dati relativi alla vista sarebbe la soluzione?