2010-04-18 14 views
5

Ich lese viele Artikel über MVC-Architektur, aber ich bin immer noch verwirrt.Korrekte Implementierung der MVC-Architektur

  • Welches Diagramm ist korrekt?
  • Gibt es überhaupt eine korrekte Implementierung der MVC-Architektur?
  • Könnte ich eine andere Implementierung der MVC-Architektur verwenden?

Diagram 1

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

Diagram 2

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

Diagramm 3

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

+2

Was bedeuten die Pfeile? – mkorpela

+0

vielleicht bedeuten Pfeile Abhängigkeit/Sichtbarkeit? –

Antwort

8

MVC kann durch das Denken der Verantwortlichkeit zu verstehen:

Die Ansicht wird nicht den Zustand des Modells erlaubt direkt zu ändern - nur über den Controller. Die Ansicht kann immer noch direkten Zugriff auf das Modell haben, allerdings nur zum Anzeigen (oder durch eine Kopie, die nicht das offizielle Modell ist).

Das Modell sollte in einem eigenen Universum leben und keinen Bezug zu Controllern oder Ansichten haben.

Der Controller steuert den Status und den Zugriff auf das Modell.

+0

Dies ist die richtige Antwort. –

+0

Im Reality Model muss immer ein Verweis auf den Controller sein, egal ob über ein Netzwerkprotokoll oder direkt über C++/JAVA Pointer/Reference. Es wäre sonst unzugänglich ... BTW: Die meisten heutigen MVC-Implementierungen (Android, Windows WPF, Qt) sind keine reinen MVCs. Ich glaube, es ist hauptsächlich aus Leistungsgründen. Wir können nur dann von einem reinen MVC sprechen, wenn es nur indirekten Zugriff auf die Daten des Modells gibt - typischerweise über XML-Nachrichten. – vitakot

+1

@vitakot: Ich verstehe nicht, warum Sie denken, dass das Modell etwas über die anderen Komponenten wissen müsste - Sie können auf das Modell zugreifen, ohne dass es einen Bezug zu Ihnen hat. – mkorpela

0

Meine Strategie gute MVC-Techniken für das Lernen war, jemanden zu finden, der eine Menge Fragen kannte und fragen. Ein paar von uns zu fragen, die Ihre Anforderungen, Ihre Absichten oder Ihre Ideen nicht kennen, macht nicht viel Gutes.

Meiner Meinung nach würde Diagramm 1 als das "beste" Diagramm angesehen werden, aber ohne Ihre einzigartige Situation zu kennen, wäre es besser, Ihre Bedürfnisse jemandem zu erklären, der Ihre Anforderungen und MVC-Architektur kennt.

1

Definitiv nicht Diagramm 3! Diagramm 1 ist in Ordnung. Ich denke, das Beste ist im Grunde Diagramm 2 mit einem Pfeil von Controller zu View.

Angenommen, Sie im Rahmen von Web-Anwendungen fragen, hier ist das, was ich denke, eine gute MVC Flow wie folgt aussieht:

  1. Wenn eine Web-Anfrage kommt, ist es eines von 2 Typen.

    Typ A - das ist eine einfache Anfrage, die auf einen Blick direkt abgebildet wird, so dass keine Controller

    Typ B beteiligt ist - diese Anforderung ist die

  2. Für beide Typ A mit einem Controller-Karten und In einer Ansicht werden die Daten immer direkt aus den Modellen gelesen.

  3. Wenn es sich um eine Anfrage vom Typ B handelt, liest/aktualisiert der Controller die Modelle, und wenn dies erledigt ist, fordert das MVC-Framework eine Ansicht an den Client zurück. Die Ansicht liest die Aktualisierungsmodelle und rendert auf dem Client.

Dies ist der von der Induction MVC framework unterstützte Ansatz.

Hoffe, das hilft.

+0

Danke, das hat mir wirklich geholfen. –

Verwandte Themen