Ho una discussione in corso con alcuni colleghi su come gestire le viste sul nostro modello.
Abbiamo un modello che può essere rappresentato da molte viste. Supponiamo di avere alcuni dati archiviati in un array e di visualizzare i dati in una tabella e nei grafici.
Un determinato grafico è unico ma puoi duplicare il grafico. Questo duplicato dovrebbe visualizzare i dati nello stesso modo dell'originale, ma non visualizza la stessa parte (ad esempio se i dati sono troppo grandi per visualizzarli contemporaneamente e puoi scorrere, quindi l'originale mostra i primi 10 elementi mentre quello duplicato mostra l'ultimo 10).
In qualsiasi momento puoi rimuovere una vista. La vista e il modello di visualizzazione vengono quindi cancellati dalla memoria. Il modello persiste anche se non ci sono viste che rappresentano i dati.
C'è una manciata di visualizzazione delle informazioni sulla vista che indica come e quale parte dei dati viene visualizzata. Lo scrolling è uno di quelli, quindi restiamo con quell'esempio. Questa informazione di visualizzazione non è né persistente né è memorizzata nel modello.
Se si spegne l'applicazione e si riavvia, non ci interessa sapere come è stata la vista precedente e impostiamo sempre un valore predefinito. Se, tuttavia, elimini una vista e poi annulli, vorremmo visualizzare i dati esattamente come prima dell'eliminazione. La vista appena creata non è tecnicamente la stessa di prima.
Al fine di regolare la vista, ho bisogno di mantenere la posizione di scorrimento.
Semplicemente inserisco le informazioni di visualizzazione nel modello poiché questo ha continuato a esistere per tutto il tempo. Tuttavia, alcuni colleghi non sono d'accordo e dicono che il modello dovrebbe contenere solo dati persistenti (come i dati reali che stiamo rappresentando).
Quindi non dovremmo tenere traccia delle informazioni sulla visualizzazione della vista nel modello.
Q1: è corretto dal punto di vista del design che il modello contenga solo dati persistenti? Se sì, come gestiresti le informazioni relative alla vista?
Come detto sopra, il modello può essere rappresentato da molte viste, alcune delle quali possono essere duplicate l'una dall'altra.
Diciamo che ho trovato un modo per mantenere i dati. Avrei una collezione di X che mostra informazioni.
Q2: quando si creano nuove viste che sostituiscono effettivamente le vecchie viste (parola chiave annulla), come posso determinare quali informazioni di visualizzazione della collezione dovrebbero essere associate a quale vista.
Voglio dire anche se la mia vista avesse un ID univoco, poiché ne abbiamo creato uno nuovo, non possiamo fare affidamento su questi dati.
Non riesco a capire come potrei associare correttamente queste informazioni. L'unica idea che emerge è avere un modello di vista separato per ogni vista e mantenere vivi anche i modelli di visualizzazione. D'altra parte, penso che non sia quello che dovrebbe essere, vero?