MVC è un modello di progettazione o un modello architettonico


109

Secondo Sun e Msdn si tratta di un design pattern.

Secondo Wikipedia si tratta di un modello architettonico

Rispetto ai modelli di progettazione, i modelli architettonici sono di dimensioni maggiori. (Wikipedia - Modello architettonico )

Oppure è un pattern architettonico che ha anche un design pattern?

Qual è vero?


1
Perché deve esserci una vera risposta ...
Mike G

secondo Dave di Product Madness, MVC è un modello di progettazione, così come RobotLegs. : P
andygoestohollywood

Risposte:


56

MVC è più un modello architettonico, ma non per un'applicazione completa. MVC si riferisce principalmente all'interfaccia utente / livello di interazione di un'applicazione. Avrai ancora bisogno di un livello di logica aziendale, forse un livello di servizio e un livello di accesso ai dati. Cioè, se ti piace l'approccio a più livelli.


16
Sì, direi che MVC è un modello architettonico per il tuo livello di presentazione.
murki

8
Sono fortemente in disaccordo su "MVC si riferisce principalmente all'interfaccia utente / livello di interazione di un'applicazione". Il modello "M" / in MVC è il livello aziendale, che probabilmente vorresti suddividere in più livelli.
mewm

Sì, questa risposta è sbagliata. MVC non riguarda assolutamente l'interfaccia utente / interazione. Puoi perfettamente avere mvc sul lato front-end e sul lato back-end, all'inizio la vista era spesso solo un html / js o un .jsp o un .phtml e il server definisce il controller e il modello. Esempio JSP (visualizzazione), JavaBeans (modello), Servlet (controller). Stesso concetto con tutti i famosi framework php (symphony, zend, cake ecc.). Ma oggigiorno i framework di frontend sembrano applicazioni back-end e moderni framework javascript usano mvc (html la tua vista, controlla il tuo script e modella i tuoi oggetti js come entità)
amdev

40

Perché uno di loro deve essere vero?

Entrambi possono essere veri, a seconda del punto di vista.

MVC può essere un modello architettonico, se costituisce la base dell'architettura dell'applicazione.

Può anche essere visto semplicemente come un modello di progettazione, una nozione astratta applicabile a qualsiasi applicazione.


27

I modelli di progettazione dicono come scrivere codice in modo efficace (considerando le metriche del codice ).

Alcuni vantaggi:

  1. Facilmente manutenibile
  2. Alta riusabilità
  3. Leggibile a causa delle astrazioni

I modelli architettonici dicono come utilizzare le risorse in modo efficace.

  1. L'esecuzione di attività parallele come programmatori e grafici può lavorare in parallelo.
  2. È possibile utilizzare più tecnologie per creare un software.

In MVC, a). Le viste possono essere create utilizzando modelli javascript e anche html può essere utilizzato b). I controller possono essere scritti in .NET framework ec). I modelli possono essere scritti in Java: è possibile utilizzare un servizio java che restituisce solo dati json.

Mentre si è in design pattern, non è possibile implementare un pattern in cui il codice può essere scritto in più tecnologie come la classe AdminUser in Java, la classe Customer in C #, la classe Partners in Php e un pattern factory in Ruby :); hmmm..così facile? :)


6

So che è stato risposto tempo fa, ma nessuno ha ancora menzionato il libro che ha reso famoso MVC: Pattern-Oriented Software Architecture (POSA), di Buschmann e altri, pubblicato nel 1996. Sebbene non sia letto così ampiamente come il libro Design Patterns , di Gamma, et al, POSA è uno dei libri fondamentali usati dalla comunità dei modelli.

Oh, e POSA identifica molto chiaramente MVC come modello architettonico. La mia impressione è che MS e Sun siano solo sciatti e definiscano ogni modello un "modello di progettazione".


3

Penso che entrambe siano vere. Se stai osservando una particolare istanza di MVC in un framework come Ruby on Rails, quell'istanza è più un modello di progettazione. Se guardi a MVC come un concetto generale , è più un modello architettonico.


3

I modelli di progettazione all'interno della triade di classi Model / View / Controller (MVC) includono e non possono essere limitati a:

  • Osservatore , disaccoppiamento di oggetti in modo che le modifiche a uno (il modello) possano influenzare un numero qualsiasi di altri (le viste) senza richiedere all'oggetto modificato (il modello) di conoscere i dettagli degli altri (le viste).

  • Composito , che ci consente di trattare un oggetto di gruppo (una vista composita) proprio come trattiamo uno dei suoi singoli oggetti (componenti della vista).

  • Strategia , in cui una vista utilizza un'istanza di una sottoclasse Controller per implementare una particolare strategia di risposta; per implementare una strategia diversa, è sufficiente sostituire l'istanza con un diverso tipo di controller.

  • Factory Method , che specifica la classe controller predefinita per una vista.

  • Decorator , aggiungendo lo scorrimento a una vista.


Riferimento

  • Pagine da 4 a 6 (Sezione 1.2 Design Patterns in Smalltalk MVC)
  • Pagine da 293 a 304 (modello di progettazione Observer)
  • Pagine da 163 a 174 (modello di disegno composito)
  • Pagine da 315 a 324 (modello di progettazione della strategia)
  • Pagine da 107 a 116 (modello di progettazione Factory Method)
  • Pagine da 175 a 185 (motivo decorativo decoratore)

Eric Gamma, Richard Helm, Ralph Johnson e John Vlissides. Modelli di progettazione: elementi di software riutilizzabile orientato agli oggetti . Addison-Wesley, Reading, MA, 1994.


1
Grazie, tutte le altre risposte sono sbagliate. Non è assolutamente "dipendente da un punto di vista" e avere dozzine o centinaia di voti non renderà vero qualcosa di sbagliato. MVC non è un design pattern in sé, è un modo per architettare il codice in 3 livelli utilizzando diversi design pattern che hai menzionato. Tutto il framework che implementa MVC dietro le quinte utilizza il concetto di osservabile, strategia e pattern composito. Il modo migliore per comprendere MVC è creare la propria implementazione e quindi comprendere i modelli di progettazione alla base.
amdev

2

MVC sempre menzionato e introdotto come / nel livello di presentazione nei libri di architettura del software.

Leggi questi libri:

  1. Progettazione di soluzioni Microsoft.NET per l'impresa (stampa Microsoft)

  2. Modelli di progettazione ASP.NET professionali (Wrox)

  3. Enterpise Solutions Patterns Using Microsoft.NET (Microsoft press)

  4. Patterns of Enterprise Application Architecture (Addison Wesley)

  5. Una guida pratica all'architettura aziendale (Prentice Hall)


6
perché 2 risposte? potresti aggiungere questa risposta come nota aggiuntiva alla tua prima
frogatto

2

Se metti dieci architetti del software in una stanza e chiedi loro di discutere su cosa sia il modello Model-View-Controller, ti ritroverai con dodici opinioni diverse. … Alcuni dei puristi là fuori avranno inevitabilmente scrupoli con quello che io chiamo "MVC". Sentiti libero di lasciare un commento fiammeggiante sulla bacheca in fondo a questa pagina Web. Terrò volentieri prospettive diverse su ciò che significa MVC, ma tieni presente che non mi interessa.

Josh Smith


1

E secondo Martin Fowler sono architetture GUI: architetture Martin Fowler-GUI

Dipende dalla dimensione dell'applicazione, poiché interessa solo le classi relative alla GUI, in una piccola (principalmente GUI) potrebbe essere considerato un modello architettonico mentre in una enorme sarebbe solo un modello di progettazione che si applica alla GUI codice (potrebbe essere il 10% del codice delle app).


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.