Ho letto molte pubblicazioni su MVC, ma non riesco ancora a capire chiaramente perché abbiamo bisogno di "controller".MVC: perché abbiamo bisogno di "controller", o quando dovremmo usare questo modello?
Io di solito scrivere le applicazioni nel modello client-server :
server di contiene tutte le business logica, e non sa nulla della gui. Fa il lavoro principale, ed è il più portabile possibile.
cliente è una GUI, si lega al server, interagisce con l'utente, invia i comandi dal utente al server.
mi piace questa architettura, e io non riesco a capire il motivo per cui la gente ha realmente bisogno un altro medium tra cliente e server di, che sembrano essere regolatore?
UPD: semplice esempio: supponiamo di dover scrivere un data logger. I dati provengono dalla porta COM, sono codificati da qualche protocollo. È necessario mostrare i messaggi ricevuti in una semplice finestra di registro.
Come dovrei farlo:
server di contiene i seguenti elementi:
Data_receiver
: riceve effettivamente i dati grezzi dalla porta COM, ma la sua interfaccia, quindi siamo in grado di fare un po ' un'altra classe che riceve dati da qualsiasi altra fonte;Data_decoder
: prende i dati grezzi e restituisce i messaggi decodificati risultanti, è anche l'interfaccia, quindi possiamo cambiare facilmente il protocollo di codifica;Data_core
: utilizzando istanze diData_receiver
eData_decoder
, emette segnali ai client.
cliente contiene i seguenti elementi:
- nucleo Appl: crea un'istanza della
Data_receiver
(quella che si collega alla porta COM),Data_decoder
eData_core
(che prende i riferimenti aData_receiver
eData_decoder
casi) , crea anche una finestra di log semplice della GUI (che prende come riferimentoData_core
); - Finestra di registro semplice della GUI: si collega allo
Data_core
, ovvero ascolta i segnali emessi da esso e visualizza i dati ricevuti.
Come ho capito quello che ho letto su MVC, GUI non dovrebbe effettivamente prendere i messaggi ricevuti dalla Data_core
, perché regolatore dovrebbe fare questo e poi passare i dati alla GUI. Ma cosa succede male se la GUI prende questi dati direttamente dal modello ?
Mi piace questa domanda, semplicemente perché nessuno ha dato una risposta "stai sbagliando". Ciò significa che la comunità in generale o non conosce la risposta a questa domanda (improbabile), o che MVC e MVVM sono sovrasfruttati al punto in cui individui come te pensano di essere * obbligatori *, quando, in realtà, a volte possono ottenere nel modo e togliere la leggibilità del codice. –
Inoltre, modelli come MVVM e MVC sono * schemi *. Ciò significa che * appaiono * nel tuo codice quando scrivi il codice SOLID. In altre parole, se stai scrivendo il codice SOLID e i pattern non appaiono, probabilmente stai scrivendo un codice che non ha bisogno di questi pattern. –
Inoltre, nel tuo esempio, sia il tuo client che il tuo server hanno il codice del controller. Esempio: un campo di testo è solo un campo di testo. La logica di convalida applicata a quel campo di testo è * codice * controller. Se non ti ritrovi a ripetere quella logica di validazione, probabilmente stai scrivendo il codice in modo DRY, che non ha bisogno di una classe "controller" in buona fede. D'altra parte, se hai due viste che fanno entrambe la stessa cosa nei loro campi di testo (convertendole in numeri interi, assicurandoti che siano tra 1-100), potresti prendere in considerazione la sottoclasse del campo di testo e l'aggiunta della logica del controllore. –