MVC (Model-View-Controller)
In MVC ist der Controller derjenige, der das Sagen hat! Der Controller wird ausgelöst oder auf der Grundlage einiger Ereignisse/Abfragen zugegriffen und verwaltet dann die Ansichten.
Ansichten in MVC sind praktisch zustandslos, der Controller ist für die Auswahl der anzuzeigenden Ansicht verantwortlich.
Z.B.: Wenn der Benutzer auf die Schaltfläche "MeinProfil anzeigen" klickt, wird der Controller ausgelöst. Er kommuniziert mit dem Modell, um die entsprechenden Daten zu erhalten. Dann zeigt er eine neue Ansicht an, die der Profilseite ähnelt. Der Controller kann die Daten vom Modell übernehmen und sie direkt an die Ansicht weiterleiten - wie im obigen Diagramm vorgeschlagen - oder die Ansicht die Daten vom Modell selbst abrufen lassen.
MVP (Modell-Ansicht-Präsentator)
In MVP ist die Ansicht derjenige, der das Sagen hat! Jede Ansicht ruft ihren Presenter auf oder hat einige Ereignisse, auf die der Presenter hört.
Views in MVP implementieren keine Logik, der Presenter ist für die Implementierung der gesamten Logik verantwortlich und kommuniziert mit der View über eine Art Schnittstelle.
Z.B.: Wenn der Benutzer auf die Schaltfläche "Speichern" klickt, delegiert der Event-Handler in der Ansicht an die Methode "OnSave" des Presenters. Der Präsentator führt die erforderliche Logik und die erforderliche Kommunikation mit dem Modell aus und ruft dann die Ansicht über seine Schnittstelle zurück, so dass die Ansicht anzeigen kann, dass das Speichern abgeschlossen ist.
MVC vs. MVP
- Bei MVC hat nicht die Ansicht das Sagen, sondern die Ansichten fungieren als Sklaven, die der Controller verwalten und steuern kann.
- In MVC sind Views zustandslos, im Gegensatz zu Views in MVP, wo sie zustandsabhängig sind und sich mit der Zeit ändern können.
- In MVP haben Ansichten keine Logik und wir sollten sie so dumm wie möglich halten. Auf der anderen Seite, Ansichten in MVC kann eine Art von Logik haben.
- In MVP ist der Presenter von der View entkoppelt und spricht mit ihr über eine Schnittstelle. Dies ermöglicht das Mocking der View in Unit-Tests.
- In MVP sind die Ansichten vollständig vom Modell isoliert. In MVC können Views jedoch mit dem Model kommunizieren, um es mit den aktuellsten Daten zu versorgen. Daten auf dem neuesten Stand zu halten.
6 Stimmen
mvc.givan.se/#mvp
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...
4 Stimmen
Der Hauptunterschied besteht darin, dass der Controller in MVC keine Daten vom Modell an die Ansicht weitergibt. Er benachrichtigt lediglich die Ansicht, um die Daten vom Modell selbst zu erhalten. In MVP hingegen gibt es keine Verbindung zwischen View und Model. Der Presenter selbst holt sich die benötigten Daten aus dem Model und gibt sie an die View weiter, um sie anzuzeigen. Mehr dazu und ein Android-Beispiel in allen Architekturmustern finden Sie hier: digigene.com/kategorie/Android/Android-Architektur
1 Stimmen
Sie werden genannt Architekturmuster no Entwurfsmuster . Wenn Sie den Unterschied wissen wollen, lesen Sie diese