Model-view-controller
Model-View-Controller (MVC, talvolta tradotto in italiano Modello-Vista-Controllore) è un pattern architetturale molto diffuso nello sviluppo di interfacce grafiche di sistemi software object-oriented. Originariamente impiegato dal linguaggio Smalltalk, il pattern è stato esplicitamente o implicitamente sposato da numerose tecnologie moderne, come framework basati su Java (Swing, JSF e Struts), su Objective C o su .NET.
A causa della crescente diffusione di tecnologie basate su MVC nel contesto di framework o piattaforma middleware per applicazioni Web, l'espressione framework MVC o sistema MVC sta entrando nell'uso anche per indicare specificatamente questa categoria di sistemi (che comprende per esempio Struts, Spring e Tapestry).
Struttura
Questo pattern, come dice il nome, è basato su tre oggetti principali: il model che contiene i dati e/o le funzioni per accedervi, il view che costituisce l'interfaccia utente, ne riceve gli input e visualizza i dati contenuti nel (o ottenuti dal) model, e il controller che riceve i comandi dell'utente dal view e li esegue praticamente, modificando lo stato degli altri due oggetti principali.
I dettagli delle interazioni fra questi tre oggetti software dipendono molto dal tipo di applicazione e dalla tecnologia usata (una web application, un middleware, un programma di produttività personale) e i tre oggetti principali hanno a loro volta una struttura complessa; quasi sempre il view e il controller ereditano il pattern Observer (cioè sono "anche" implementazioni di Observer) in modo da essere consapevoli di eventuali cambiamenti di stato del model. A volte, quando è necessario cambiare il comportamento standard dell'applicazione a seconda delle circostanze, il controller implementa anche il pattern Strategy. La struttura specifica di ogni implementazione viene quindi interpretata di volta in volta dagli implementatori, ma in linea generale l' applicazione deve separare i componenti software che implementano il modello delle funzionalità di business (model), dai componenti che implementano la logica di presentazione (view) e di controllo che utilizzano tali funzionalità (controller).
Schema di funzionamento
Il Model è il cuore dell'applicazione: definisce i dati e le operazioni che possono essere eseguiti su essi. Può inoltre avere la responsabilità di notificare eventuali modifiche dei dati ad altri componenti software registrati.
La View è la rappresentazione grafica dei dati a video (GUI). Registrandosi presso il Model, la View può mantenere la rappresentazione dei dati sempre aggiornata.
Il Controller ha la responsabilità di gestire l'input prodotto dall'utente e interpretarlo eseguendo azioni sul Model e/o sulla View (il Controller, in altre parole, implementa la logica di controllo dell'applicazione).