Che cos'è Model-View-Controller?
Model-view-controller (MVC) è un tipo di architettura software e modello di progettazione che segmenta ogni elemento di un programma in aree di funzionalità ben definite. Nell'architettura modello-view-controller, il modello si occupa di tutta la logica del programma interno che manipola, salva, recupera e altrimenti gestisce e calcola i dati. L'aspetto della vista è responsabile della visualizzazione delle informazioni dal modello per l'utente e fornisce anche un modo per fornire input al programma. Il controller prende input dalla vista, valuta o altrimenti li elabora e interagisce con il modello per modificare i dati o lo stato del programma, che alla fine viene mostrato all'utente attraverso la vista. Sebbene il design del controller-visualizzatore di modelli richieda che un programma incapsuli la funzionalità, le tre sezioni devono ancora interagire tra loro in qualche modo e generalmente dipendono l'una dall'altra in un certo senso, a differenza di altri modelli di design più aggressivi.
Abbastanza spesso, il modello-view-controller pattern è visto nelle applicazioni che gestiscono un'interfaccia utente grafica (GUI). Utilizzando il modello MVC, i diversi elementi visivi della GUI vengono gestiti dalla vista, la registrazione e l'elaborazione di dove e cosa fa clic un utente viene gestita dal controller e il modello modifica effettivamente le informazioni o le informazioni di caricamento. A seconda del design esatto di un'applicazione, ogni componente del modello MVC può avere un meccanismo per interagire con gli altri componenti, ad esempio il modello è in grado di istruire direttamente la vista per aggiornare lo schermo o la vista in modo da dire al controller che sta aggiornando lo schermo e non accettare nuovi input. A differenza di alcuni modelli di progettazione che adottano un rigoroso approccio black-box, i programmi controller vista modello tendono ad essere leggermente più flessibili, sebbene alcune implementazioni possano rendere difficile modificare o eseguire il debug di un programma MVC in modo modulare.
In alcuni casi, il modello controller vista modello non deve contenere solo uno di ciascun componente. Un esempio è un'applicazione che ha più viste, come più monitor, o un display che può essere visto su più dispositivi client. È possibile utilizzare più viste e controller in un'applicazione che consente a molti utenti di accedere a un database, tutti rispondendo a un singolo modello. È più comune, tuttavia, progettare sistemi che mantengano un rapporto uno a uno dei componenti del controller vista modello.
Anche se i componenti del controller della vista modello fanno affidamento l'uno sull'altro, può essere molto più semplice modificare alcune parti di un sistema che usano il modello MVC che se non fosse usato alcun motivo, specialmente nel caso di non orientato agli oggetti applicazioni. Se un'applicazione utilizza callback o listener e osservatori per implementare le interazioni tra i componenti, ogni componente può essere modificato senza influire sugli altri due. Ciò significa che è possibile implementare una nuova GUI senza influire sul modello o sul controller. Va notato, tuttavia, che le modifiche fondamentali a un sistema di controller della vista modello potrebbero richiedere una piccola quantità di ricodifica per ogni singolo componente.