2010-04-18 13 views
5

Ho letto molti articoli sull'architettura MVC, ma sono ancora confuso.Implementazione corretta dell'architettura MVC

  • Quale diagramma è corretto?
  • Esiste persino un'implementazione corretta dell'architettura MVC?
  • Posso utilizzare un'implementazione diversa dell'architettura MVC?

Diagramma 1

Diagram 1 http://img219.imageshack.us/img219/4576/screenshot20100418at213.png

Diagramma 2

Diagram 2 http://img38.imageshack.us/img38/4576/screenshot20100418at213.png

Diagramma 3

Diagram 3 http://img526.imageshack.us/img526/3900/screenshot20100418at214.png

+2

cosa rappresentano le frecce? – mkorpela

+0

forse le frecce significano dipendenza/visibilità? –

risposta

8

MVC può essere compreso dal pensiero delle responsabilità:

la vista non è autorizzato a modificare lo stato del modello direttamente - solo attraverso il controller. La vista può ancora avere un accesso diretto al Modello anche se solo per la visione (o avendo una copia che non è il Modello ufficiale).

Il modello deve vivere nel proprio universo e non avere alcun riferimento ai controllori o alle viste.

Il controller controlla lo stato e l'accesso al modello.

+0

Questa è la risposta corretta. –

+0

Nella realtà Modello deve sempre avere un riferimento al controller, non importa se tramite qualche protocollo di rete o direttamente da C++/pointer/riferimento JAVA. Altrimenti sarebbe inaccessibile ... BTW: La maggior parte delle implementazioni MVC di oggi (Android, Windows WPF, Qt) non sono MVC puri. Credo che sia soprattutto per motivi di prestazioni. Possiamo parlare di un puro MVC solo se non vi è altro che l'accesso indiretto ai dati del modello, in genere tramite messaggi XML. – vitakot

+1

@vitakot: Non capisco perché pensi che il modello avrebbe bisogno di sapere qualcosa sugli altri componenti - Puoi accedere al modello senza che abbia riferimento a te .. – mkorpela

0

La mia strategia per l'apprendimento di buone tecniche MVC è stato quello di trovare qualcuno che conosceva e chiedere un sacco di domande. Chiedendo un gruppo di noi che non conoscono le tue esigenze, le tue intenzioni o le tue idee non fanno molto bene.

È mia opinione che il diagramma 1 sia considerato il diagramma "migliore", ma senza conoscere la tua situazione unica sarebbe meglio spiegare le tue esigenze a qualcun altro che conosce le tue esigenze e l'architettura MVC.

1

Definitivamente non Diagramma 3! Il diagramma 1 è OK. Penso che il meglio sia sostanzialmente il diagramma 2 con una freccia da Controller a View.

Supponendo che si sta chiedendo nel contesto di applicazioni web, qui è quello che penso un buon flusso MVC assomiglia:

  1. Quando una richiesta web arriva, è uno dei 2 tipi.

    Tipo A - questa è una semplice richiesta che direttamente viene mappato a una vista, in modo che nessun controllore è coinvolto

    Tipo B - questa è richiesta che associa a un controller

  2. sia tipo A e B una vista legge sempre i dati direttamente dai modelli

  3. Se si tratta di una richiesta di tipo B, il controller legge/aggiorna i modelli e al termine chiede al framework MVC di restituire una vista al client. La vista legge i modelli di aggiornamento e rende al client.

Questo è l'approccio supportato dal Induction MVC framework.

Spero che questo aiuti.

+0

Grazie, mi ha davvero aiutato. –

Problemi correlati