Mentre cercavo di concretizzare il concetto di design pattern, mi è venuta una domanda: come ho chiesto nel titolo, Is MVC (Model-View-Controller) tipo di architettura di Design Pattern?
The Timeless Way of Building , che introdusse l'idea di Patterns fu scritto nel 1979, e ci volle un altro decennio finché i programmatori iniziarono a prendere le idee di Christopher Alexander e applicarle al software ( Modelli di progettazione: elementi del software orientato agli oggetti riutilizzabile è stato rilasciato nel 1994).
Il documento / i originale MVC è stato scritto a partire dal 1978 , prima l'introduzione del concetto di Patterns e ~ 15 anni prima che questo concetto raggiungesse il mondo della programmazione. Quindi, Trygve Reenskaug certamente non ci ha pensato come Pattern.
Tuttavia, in termini moderni, lo definirei principalmente come Modello di interazione dell'interazione utente , che influenza anche l'architettura software e la progettazione software, quindi ha anche alcuni tratti di un'architettura software Modello e Modello di progettazione software . Ma il focus principale di MVC è Empowerment dell'utente e Metaphor di manipolazione diretta , entrambi che non hanno nulla a che fare con Architecture o Design, sono tutto su User Interaction.
Sì e no e dipende. MVC è uno dei termini che una volta aveva un significato molto specifico, ma poi è diventato in uso per diventare un termine molto più ampio e meno specifico.
L'uso originale di MVC era specificamente come un modello di progettazione usato durante la codifica di GUI desktop in Smalltalk. Lo schema riguardava specificamente la separazione dei dati visualizzati in un modulo dai controlli dell'interfaccia utente utilizzati per visualizzare i dati e i gesti di input (clic del mouse, ecc.) Utilizzati dall'utente. Questo è stato un tentativo iniziale di strutturare il codice GUI e sono stati sviluppati molti altri modelli di GUI (modelli come Model-View-Presenter, Model-View-Viewmodel e così via). Martin Fowler ha scritto una bella panoramica della cronologia del pattern MVC utilizzato nelle GUI.
Successivamente qualcuno ha deciso di riutilizzare il termine MVC per strutturare applicazioni web in un certo modo. Non è proprio lo stesso schema, ma puoi dire che Web MVC è stato ispirato dalla separazione delle preoccupazioni nell'MVC originale. Però è più un'architettura che un modello classico. Vi sentirete veramente confusi se provate ad applicare la vostra comprensione del pattern MVC originale a come i termini vengono utilizzati nelle app Web MCV; ad esempio, ciò che viene chiamato la visualizzazione in web-MVC corrisponde più o meno al modello nel classico MVC.
Ora MVC è spesso usato per descrivere un intero framework per applicazioni web, come nel framework MVC di Asp.net di Microsofts.
Anche in questo caso, alcuni vecchi timer continuano a utilizzare il termine MVC per un patten specifico utilizzato durante lo sviluppo del codice della GUI desktop. Quindi, in breve, MVC può significare cose molto diverse a seconda di chi chiedi.
Leggi altre domande sui tag design-patterns mvc