Oggi sono entrato in un dibattito al lavoro, spero che tu possa aiutarmi a sistemarlo.
Il mio collega desidera separare UI, Modello, DB e Rete in questo modo:
-
Crea un livello API tra l'interfaccia utente e il controller, che consentirà l'interfaccia utente per interrogare tutti i modelli nell'APP.
-
Ci sarà un altro controller che interromperà i modelli le loro rappresentazioni DB (Es .: UserTablesModel, ScoreTableModel ...), Sarà un singleton chiamato DBControler e lo farà Fornire anche alcuni metodi di utilità per interrogare il DB (Es: insert (tableName, value ...).
-
ModelTables utilizzerà l'hub eventi per notificare all'interfaccia utente modifiche di stato, e saranno aggiornati dal livello di rete usando DBControler di riferimento.
Questa idea non mi piace perché crea un accoppiamento tra modelli non collegati nel livello controller. Penso che sarebbe più saggio consentire all'interfaccia utente di accedere direttamente ai Modelli (magari renderli singleton) e spetta al modello offrire un'API adeguata per accedere ai propri dati e fornire un callback di eventi per notificare il suo cambiamento di stato (nessun evento hub). Mi piace la parte che i modelli devono essere aggiornati direttamente dal livello di rete.
Inoltre, non mi piace il nome TableModel, penso che il DB debba essere un servizio accessibile dal modello, un modello può accedere a più tabelle.
Qual è il modo corretto di lavorare con MVC?