2346 Stimmen

Was sind MVP und MVC und worin besteht der Unterschied?

Beim Blick über den Tellerrand RAD (Ziehen und Konfigurieren) bei der Erstellung von Benutzeroberflächen, die von vielen Tools unterstützt werden, werden Sie wahrscheinlich auf drei Entwurfsmuster stoßen, die Modell-Ansichts-Steuerung , Modell-Ansicht-Präsentator y Model-View-ViewModel . Meine Frage besteht aus drei Teilen:

  1. Welche Themen werden in diesen Mustern angesprochen?
  2. Inwiefern sind sie sich ähnlich?
  3. Wie unterscheiden sie sich?

6 Stimmen

3 Stimmen

IDK, aber angeblich für die ursprüngliche MVC, war es in der kleinen verwendet werden soll. Jede Schaltfläche, jedes Etikett usw. hatte sein eigenes View- und Controller-Objekt, zumindest behauptet Onkel Bob das. Ich glaube, er hat über Smalltalk gesprochen. Schauen Sie sich seine Vorträge auf YouTube an, sie sind faszinierend.

1 Stimmen

MVP fügt eine zusätzliche Ebene der Indirektion hinzu, indem es den View-Controller in einen View und einen Presenter aufteilt...

5voto

Clive Jefferies Punkte 1110

Die einfachste Antwort ist, wie die Ansicht mit dem Modell interagiert. In MVP wird die Ansicht durch den Präsentator aktualisiert, der als Vermittler zwischen der Ansicht und dem Modell fungiert. Der Präsentator nimmt die Eingaben von der Ansicht entgegen, die die Daten aus dem Modell abruft, dann die erforderliche Geschäftslogik ausführt und anschließend die Ansicht aktualisiert. In MVC aktualisiert das Modell die Ansicht direkt, ohne den Umweg über den Controller.

0 Stimmen

Ich habe downvoted, denn afaik das Modell weiß nichts über die Ansicht in MVC und es ist nicht in der Lage, es direkt zu aktualisieren, wie Sie schreiben.

2 Stimmen

Schauen Sie sich MVC auf Wikipedia an, das ist genau, wie es funktioniert.

2 Stimmen

Ob es den Lesern gefällt oder nicht, viele Quellen, die durch Googeln gefunden werden können, besagen, dass in MVC die Ansicht Aktualisierungen des Modells abonniert. et in einigen Fällen vielleicht sogar sein den Controller und damit aufrufen. solche Aktualisierungen. Wenn Ihnen das nicht gefällt, dann beschweren Sie sich über diese Artikel oder geben Sie an, welche "Bibel" Ihrer Meinung nach die einzige legitime Quelle ist, anstatt Antworten herabzuwürdigen, die lediglich die anderen verfügbaren Informationen weitergeben!

3voto

Sie haben vergessen Aktions-Domain-Responder ( ADR ).

Wie in einigen Grafiken oben erläutert, besteht ein direkter Zusammenhang zwischen dem Modell とのことです。 Siehe in MVC. Eine Aktion wird auf dem Controller die eine Aktion auf der Seite Modell . Diese Aktion in der Modell , wird eine Reaktion auslösen im Siehe . Die Siehe wird immer dann aktualisiert, wenn die Modell den Zustand ändert.

Einige Leute vergessen immer wieder, dass MVC wurde in den späten 70er Jahren geschaffen. und dass das Web erst Ende der 80er/Anfang der 90er Jahre geschaffen wurde. MVC wurde ursprünglich nicht für das Web entwickelt, sondern für Desktop-Anwendungen, bei denen Controller, Model und View gemeinsam existieren.

Da wir Web-Frameworks verwenden ( z.B.:. Laravel ), die immer noch die gleichen Namenskonventionen verwenden ( model-view-controller ), neigen wir zu der Annahme, dass es sich um MVC handeln muss, aber in Wirklichkeit ist es etwas anderes.

Werfen Sie stattdessen einen Blick auf Aktions-Domain-Responder . Bei ADR ist die Controller erhält eine Aktion die eine Operation in der Datei Modell/Gebiet . So weit, so gut. Der Unterschied ist, dass die Antwort/Daten dieser Operation gesammelt und an eine Antwortgeber ( z.B.:. view() ) für das Rendering. Wenn eine neue Aktion für dieselbe Komponente angefordert wird, wird die Controller wird erneut aufgerufen, und der Zyklus wiederholt sich. Im ADR gibt es keine Verbindung zwischen dem Modell/der Domäne und der Ansicht ( Antwort des Empfängers ).

Nota: Wikipedia erklärt, dass " Jede ADR-Aktion wird jedoch durch separate Klassen oder Abschlüsse repräsentiert. ". Dies ist pas unbedingt wahr. Mehrere Aktionen können sich in demselben Controller befinden, und das Muster ist immer noch dasselbe.

mvc adr model-view-controller action-domain-responder

2voto

Chinmai Kulkarni Punkte 127

In wenigen Worten,

  • In MVC hat die Ansicht den UI-Teil, der den Controller aufruft, der wiederum das Modell aufruft, und das Modell wiederum feuert Ereignisse zurück zur Ansicht.
  • In MVP enthält die Ansicht die Benutzeroberfläche und ruft den Präsentator für den Implementierungsteil auf. Der Präsentator ruft die Ansicht direkt für Aktualisierungen des UI-Teils auf. Das Modell, das die Geschäftslogik enthält, wird vom Präsentator aufgerufen und es gibt keinerlei Interaktion mit der Ansicht. Hier übernimmt also der Präsentator den größten Teil der Arbeit :)

0voto

marvelTracker Punkte 4035

MVP

MVP steht für Model - View - Presenter. Dies wurde Anfang 2007 deutlich, als Microsoft Smart Client Windows-Anwendungen einführte.

Ein Presenter fungiert in MVP als übergeordnete Rolle, die View-Ereignisse und Geschäftslogik von Modellen bindet.

Die Bindung von View-Ereignissen wird im Presenter über eine View-Schnittstelle implementiert.

Die Ansicht ist der Initiator für Benutzereingaben und delegiert dann die Ereignisse an den Präsentator, der wiederum Ereignisbindungen verarbeitet und Daten von Modellen abruft.

Vorteile: Die Ansicht hat nur UI und keine Logik Hoher Grad an Testbarkeit

Nachteile: Etwas komplex und mehr Arbeit bei der Implementierung von Ereignisbindungen

MVC

MVC steht für Model-View-Controller. Der Controller ist für die Erstellung von Modellen und das Rendern von Ansichten mit verbindlichen Modellen verantwortlich.

Der Controller ist der Initiator und entscheidet, welche Ansicht gerendert werden soll.

Vorteile: Betonung des Grundsatzes der Einzelverantwortung Hoher Grad an Testbarkeit

Nachteile: Manchmal zu viel Arbeitsbelastung für Controller, wenn versuchen, mehrere Ansichten im selben Controller zu rendern.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X