MVVM distingue tra modello e modello di vista e relazioni relazionali sull'architettura reattiva

1

Questa dovrebbe essere una semplice MVVM - domanda di architettura reattiva, qualcosa che probabilmente mi manca.

Inizierò con un esempio di contesto:

Ho un'applicazione Music Tracks Player con 2 modelli Player and Track. La relazione tra giocatore e traccia è piuttosto ovvia: il giocatore contiene tracce (è possibile riprodurre più tracce contemporaneamente), quindi in un'architettura Orientamento oggetti vorrei memorizzare (o fare riferimento, dovrei dire) un elenco di oggetti traccia all'interno di un'istanza giocatore.

Come dovrei riflettere questa relazione sulla mia app reattiva MVVM? dovrei creare un modello giocatore che contiene un elenco di tracce? o dovrei gestirli separatamente sul mio View-Model? Se memorizzo solo il modello Player, come faccio a rilevare le modifiche su ogni traccia (ad esempio l'avanzamento di una traccia)? O forse ogni parte View (Player e lista di tracce) dovrebbe avere il proprio modello di vista, ma come si riconosceranno l'un l'altro, ad esempio un giocatore deve sapere quante tracce ha per alcuni calcoli logici per la rappresentazione della vista?

Sul lato Visuale devo mostrare entrambi, ad esempio lo stato del giocatore (nome, stato, metadati) e per ogni traccia dovrei visualizzare la posizione corrente nella traccia ecc.

Grazie:)

    
posta Dima Gimburg 20.07.2018 - 18:23
fonte

1 risposta

1

Il modello deve essere progettato in base alle regole aziendali, indipendentemente da qualsiasi vista o vista su cui potrebbe eventualmente essere visualizzata. Se ha più senso avere un lettore in possesso di più tracce, allora è logico indipendentemente dal tipo di visualizzazione.

Il lavoro del tuo modello di vista è di adattare il modello a qualunque formato abbia più senso per la vista. Dovresti finire con un modello di visualizzazione per ogni vista, ma dipende da te quanto vuoi ottenere con questo.

Ad esempio, potresti avere una singola vista che rappresenta un'intera finestra (e quindi hai solo un modello di vista per finestra) o forse puoi suddividere la finestra in più componenti (nel qual caso avresti un modello di vista per ogni componente.) Un sistema più componentizzato può favorire il riutilizzo attraverso Windows, ma l'astrazione extra potrebbe rendere il codice più difficile da leggere. Devi bilanciare il buono con il cattivo.

    
risposta data 28.08.2018 - 02:29
fonte

Leggi altre domande sui tag