design MVC. Connessioni appropriate

1

OK ... Sto tentando di implementare una semplice applicazione Windows MVC ...

Esiste una classe helper (ConvertPDF) creata dal controller.

Poiché è attualmente implementato, il convertitore aggiorna direttamente la vista e il modello. Ho una sensazione interiore che questa è solo una cattiva forma! Ho incluso queste due associazioni nel diagramma delle classi.

Il controller deve essere informato che ConvertPDF ha finito? Una volta che il Controller lo sa, è responsabile dell'aggiornamento della Vista e del DataSet.

Se questo è l'approccio preferito, chiunque può indirizzarmi ad alcuni esempi. Immagino che ci saranno eventi e delegati coinvolti.

Grazie.

    
posta Oscar 31.03.2017 - 03:31
fonte

2 risposte

1

In generale il controllore dovrebbe aggiornare il modello, che è mappato alla vista

Sembra che tu sia andato un po 'fuori strada, mescolando il tuo Modello e il Controller nella classe Album.

Sebbene questo sia un buon OOP per MVC, dovresti aggiungere una classe controller in più in cui inserisci la logica per pressioni di pulsanti, eventi ecc. cioè

ButtonClicked
{
     //trigger non business logic event
     this.ViewModel.ShowProgressBar = true
     this.Album.DoThing();
     this.ViewModel.AlbumData = this.Album.Data
     this.ViewModel.ShowProgressBar = false
}

Se mantieni metodi di Business logic sul tuo oggetto Album, potresti eventualmente aggiungere un'altra classe AlbumViewModel per associare la vista a. Ciò può semplificare il grafico del modello di business se non corrisponde a un 1-1 con la vista.

L'esposizione di un oggetto di basso livello come un set di dati come un modello non è una grande idea, a meno che tu non veda usa un componente che lo consuma direttamente, ad esempio un grafico o una griglia. Anche allora probabilmente stai meglio con un oggetto, dato che vorrai degli extra come xAxis legend, sortedByCol etc

Il mio consiglio è di ricominciare da capo con una nuova classe AlbumViewModel. Metti tutto ciò che serve alla vista. Quindi crea una nuova classe AlbumController, aggiungi i tuoi modelli di business e la logica extra lì, scopri come creare il Modello di visualizzazione al verificarsi degli eventi.

Una volta che hai quegli oggetti con nome, puoi tagliare le cose indietro e decidere dove vuoi che i vari pezzi di logica vadano. Modello di business o controller.

Non toccare mai direttamente la vista. Questo dovrebbe essere fatto legando (non si dice quale framework si sta usando?)

    
risposta data 31.03.2017 - 06:26
fonte
0

la classe converterPDF dovrebbe restituire il risultato del suo calcolo al controller e il controller aggiorna il modello. la vista dovrebbe osservare il modello per le modifiche (modello di progettazione Observer) e aggiornarsi quando il modello cambia.

    
risposta data 01.04.2017 - 13:16
fonte

Leggi altre domande sui tag