Uso ambiguo di "Controller" in MVC

3

Ho sentito due usi separati per il termine controller quando si parla della metodologia Model View Controller .

  1. Una sezione intermedia del codice che comunica tra il modello e la vista, collegandoli tra loro.
  2. Il modulo che si occupa dell'input, analogamente a come la vista si occupa dell'output.

Per i principianti, quale definizione è corretta? Ho letto altro che usa la prima definizione della seconda, mentre la seconda è la prima che ho appreso.

Inoltre, mi sembra che entrambe queste cose siano utili - in effetti, quando ho usato i progetti di MVC, ho usato entrambe queste cose in qualche modo (anche se ho sempre chiamato una delle loro il controller). L'MVC dovrebbe essere veramente definito in un modo che includa entrambe queste cose? Ciò significherebbe che l'architettura contiene il modello, un modulo di input, un modulo di output e un modulo intermedio per collegarli tutti, e questo ha senso per me.

    
posta Southpaw Hare 31.03.2013 - 05:47
fonte

1 risposta

2

Se si va all'origine della metodologia MVC, che si trova su Smalltalk 80 circa 20 anni fa, allora la seconda definizione è quella corretta.
A quel tempo il supporto del sistema operativo per le interfacce utente era ancora piuttosto limitato e la maggior parte doveva essere eseguita dalle applicazioni stesse. All'interno di MVC, una raccolta di viste sarebbe responsabile dell'aggiornamento delle porzioni corrette dello schermo, mentre una raccolta di controller (una per ogni vista) ha capito cosa fare con ogni pressione di un tasto.

In tempi moderni, il sistema operativo si prende la maggior parte dell'onere di capire cosa fare con una pressione di un tasto e l'applicazione ne viene a conoscenza solo attraverso i componenti della vista quando l'utente conferma la propria immissione di dati. Ciò significa che il controller di vecchio non ha più spazio in un'applicazione moderna, perché il suo ruolo è occupato da una combinazione di vista e sistema operativo.

Allo stesso tempo, le classi vista vengono sempre più fornite dal sistema operativo o dai quadri generativi e quindi diventano sempre più generiche. È qui che si inserisce la prima definizione di controller: per far fronte alle mutevoli esigenze e responsabilità, il controller si trasforma in più di un componente di colla che lega le classi di viste generiche con il modello specifico dell'applicazione (e GUI-agnostico).

Per riassumere, entrambe le definizioni di controller sono (in prospettiva storica) corrette, ma la prima è la più rilevante al giorno d'oggi.

    
risposta data 31.03.2013 - 12:10
fonte

Leggi altre domande sui tag