Model-view-controller

pattern architetturale di programmazione
Versione del 18 dic 2007 alle 20:52 di 151.53.232.137 (discussione) ([[Image:ModelViewControllerDiagram.svg|thumb|200px|A simple diagram depicting the relationship between the Model, View, and Controller. Note: the solid lines indicate a direct association, and the das)

Model-iew-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.

un semplice esempio

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

Il pattern è basato sulla separazione dei compiti fra i componenti software che interpretano tre ruoli principali:

  • il model contiene i dati e fornisce i metodi per accedervi;
  • il view visualizza i dati contenuti nel model;
  • il controller riceve i comandi dell'utente (in genere attraverso il view) e li attua modificando lo stato degli altri due componenti.

Questo schema, fra l'altro, implica anche la tradizionale separazione fra la logica applicativa (in questo contesto spesso chiamata "logica di business"), a carico del model, e l'interfaccia utente, a carico del view e del controller.

I dettagli delle interazioni fra questi tre oggetti software dipendono molto dalle tecnologie usate (linguaggio di programmazione, eventuali librerie, middleware e via dicendo) e dal tipo di applicazione (per esempio se si tratta di un'applicazione web, o di un'applicazione desktop). Quasi sempre la relazione fra view e model è descrivibile anche come istanza del pattern Observer. A volte, quando è necessario cambiare il comportamento standard dell'applicazione a seconda delle circostanze, il controller implementa anche il pattern Strategy.

Voci correlate