Was sind MVP und MVC und was ist der Unterschied?

stimmen
1k

Bei der Suche über das RAD (Drag & Drop und konfiguriert) Art und Weise Benutzeroberflächen zu bauen , die viele Werkzeuge fördern Sie wahrscheinlich über drei Design - Muster genannt kommen Model-View-Controller - , Model-View-Presenter und Model-View-Viewmodel . Meine Frage hat drei Teile , um es:

  1. Welche Themen befassen sich diese Muster?
  2. Wie sind sie ähnlich?
  3. Worin unterscheiden sie sich?
Veröffentlicht am 05/08/2008 um 11:06
quelle vom benutzer
In anderen Sprachen...                            


25 antworten

stimmen
1k

Model-View-Presenter

In MVP enthält der Moderator die UI Geschäftslogik für die Ansicht. Alle Anrufungen aus der Sicht Delegierten direkt an Moderator. Der Moderator wird auch direkt von der Ansicht entkoppelt und spricht mit ihm über eine Schnittstelle. Dies ist zu spöttischen der Ansicht in einem Unit - Test zu ermöglichen. Ein gemeinsames Merkmal von MVP ist , dass es hat eine Menge von Zwei-Wege - Dispatching sein. Zum Beispiel, wenn jemand auf die Schaltfläche „Speichern“ klickt, werden die Event - Handler - Delegierten des Moderators „OnSave“ -Methode. Sobald die Daten gespeichert sind, rufen Sie die Presenter wird dann den Blick durch seine Schnittstelle zurück , so dass die Ansicht , dass die Daten gespeichert hat angezeigt werden können.

MVP neigt zum Erreichen getrennt Präsentation in Web Forms ein sehr natürliches Muster zu sein. Der Grund dafür ist , dass die Ansicht immer zuerst von der ASP.NET - Laufzeit erstellt. Sie können mehr über beide Varianten erfahren .

Zwei primäre Variationen

Passive Ausblick: Die Ansicht ist so dumm wie möglich und enthält fast Null - Logik. Der Moderator ist ein mittlerer Mann, der auf die Ansicht und das Modell spricht. Die Ansicht und Modell sind vollständig voneinander abgeschirmt. Das Modell kann Ereignisse auslösen, aber der Moderator abonniert , um sie für die Ansicht zu aktualisieren. In Passive Ansicht gibt es keine direkte Datenbindung, sondern die Ansicht macht Set - Eigenschaften , die der Moderator die Daten setzen verwendet. Alle Zustand ist in dem Presenter und nicht die Ansicht verwaltet.

  • Pro: maximale Testbarkeit Oberfläche; saubere Trennung der Ansicht und Modell
  • Con: mehr Arbeit (zum Beispiel all Set-Eigenschaften), wie Sie alle Datenbindung selbst tun.

Supervising Controller: Der Presenter steuert die Benutzer Gesten. Die Ansicht bindet an das Modell Bindung direkt durch die Daten. In diesem Fall ist es die Aufgabe des Presenter das Modell zur Ansicht abgehen , so dass es daran binden kann. Der Moderator wird auch Logik für Gesten wie Drücken einer Taste, Navigation usw. enthält

  • Pro: von Datenbindung die Menge an Code nutzt, reduziert.
  • Con: Es gibt weniger prüfbare Oberfläche (wegen der Datenbindung), und es gibt weniger Verkapselung in der Ansicht, da sie direkt mit dem Modell spricht.

Model View Controller

In der MVC ist der Controller verantwortlich für die Bestimmung , welche Ansicht in Reaktion auf jede Aktion angezeigt werden, einschließlich , wenn die Anwendung geladen. Dies unterscheidet sich von MVP , wo Aktionen Route durch den Blick auf den Moderator. In MVC korreliert jede Aktion in der Ansicht mit einem Aufruf an eine Steuerung zusammen mit einer Aktion. In der Web beinhaltet jede Aktion einen Aufruf eine URL auf der anderen Seite ein Regler ist, der reagiert. Sobald die Steuerung ihre Verarbeitung abgeschlossen hat, wird er die richtige Ansicht zurückzukehren. Die Sequenz wird auf diese Weise während der gesamten Lebensdauer der Anwendung:

    Aktion in der Ansicht
        -> Call to Controller
        -> Controller-Logik
        -> Regler gibt den Blick.

Ein weiterer großer Unterschied zu MVC ist, dass die Ansicht nicht direkt an das Modell binden. Die Aussicht einfach macht, und ist völlig staatenlos. In Implementierungen von MVC in der Regel die Ansicht wird keine Logik in der Code-behind. Dies steht im Gegensatz zu MVP, wo es unbedingt notwendig ist, weil, wenn die Ansicht delegiert nicht den Moderator, es wird nie aufgerufen.

Präsentationsmodell

Ein anderes Muster zu sehen ist das PräsentationsmodellMuster. In diesem Muster gibt es keinen Moderator. Stattdessen bindet die Ansicht direkt an ein Präsentationsmodell. Das Präsentationsmodell ist ein Modell speziell für die Ansicht gefertigt. Das bedeutet, das Modell-Eigenschaften aussetzen kann, die man nie auf einem Domänenmodell setzen würde, wie es eine Verletzung der Trennung-of-Anliegen wäre. In diesem Fall bindet das Präsentationsmodell an das Domänenmodell und kann auf Ereignisse abonnieren von diesem Modell kommen. Die Ansicht abonniert dann auf Ereignisse aus dem Präsentationsmodell kommen und aktualisiert sich entsprechend. Das Präsentationsmodell kann Befehle freizulegen, die die Ansicht zum Aufrufen Aktionen verwendet. Der Vorteil dieses Ansatzes ist, dass Sie im Wesentlichen ganz den Code-behind entfernen als die PM vollständig alle das Verhalten für die Ansicht kapselt.Model-View-Viewmodel .

Es gibt einen MSDN - Artikel über das Präsentationsmodell und ein Schnitt in der Composite Application Guidance für WPF (ehemals Prism) über getrennte Präsentation Patterns

Beantwortet am 19/09/2008 um 13:46
quelle vom benutzer

stimmen
381

Ich gebloggt dies über eine Weile zurück, zitiert auf Todd Snyder den hervorragenden Beitrag auf dem Unterschied zwischen den beiden :

Hier sind die wichtigsten Unterschiede zwischen den Mustern:

MVP-Muster

  • Ansicht ist mehr lose mit dem Modell verbunden. Der Moderator ist verantwortlich für die Bindung des Modells zur Ansicht.
  • Einfacher zu Unit-Test, weil die Interaktion mit der Ansicht ist, über eine Schnittstelle
  • Normalerweise sehen zu Präsentator Karte 12.59. Komplexe Ansichten können mehrere Moderatoren haben.

MVC-Muster

  • Controller sind auf Verhalten basiert und kann über Ansichten geteilt werden
  • Kann für die Bestimmung verantwortlich sein, die Ansicht angezeigt

Es ist die beste Erklärung, die im Internet die ich finden konnte.

Beantwortet am 05/08/2008 um 11:21
quelle vom benutzer

stimmen
358

Dies ist eine grobe Vereinfachung der vielen Varianten dieser Entwurfsmuster, aber das ist, wie ich zwischen den beiden über die Unterschiede zu denken.

MVC

MVC

MVP

Geben Sie hier image description

Beantwortet am 06/07/2013 um 23:18
quelle vom benutzer

stimmen
202

Hier sind Illustrationen, die Kommunikationsfluss darstellen

Geben Sie hier image description

Geben Sie hier image description

Beantwortet am 12/09/2014 um 21:47
quelle vom benutzer

stimmen
147

MVP ist nicht unbedingt ein Szenario , in dem die Ansicht zuständig ist (siehe Taligent MVP zum Beispiel).
Ich finde es bedauerlich , dass die Menschen immer noch die (Blick in Gebühr) als Muster predigen zu einem anti-Muster im Gegensatz widerspricht „Es ist nur eine Ansicht“ (Pragmatische Programmierer). „Es ist nur eine Ansicht“, so dass die endgültige Ansicht des Benutzer angezeigt zweitrangig der Anwendung ist. Microsoft MVP - Muster macht die Wiederverwendung von Ansichten viel schwieriger und bequem Ausreden Microsofts Designer von schlechter Praxis zu fördern.

Um ganz ehrlich zu sein, ich denke , die zugrunde liegenden Anliegen der MVC gelten für alle MVP Umsetzung und die Unterschiede sind fast ausschließlich semantische. Solange Sie zwischen der Ansicht Trennung von Bedenken folgen (das angezeigt wird, die Daten), den Controller (das initialisiert und Interaktion mit dem Benutzer steuert) und das Modell (die zugrunde liegenden Daten und / oder Dienstleistungen)) , dann werden Sie die Vorteile von MVC Acheiving . Wenn Sie die Vorteile sind Acheiving dann kümmert sich die wirklich , ob Ihr Muster ist MVC, MVP oder Controller - Supervising? Das einzige wirkliche Muster bleibt , wie MVC, der Rest Aromen davon nur abweichen.

Betrachten wir dieses sehr spannende Artikel, umfassend eine Anzahl dieser unterschiedlichen Implementierungen auflistet. Es ist zu beachten , dass sie alle im Grunde das gleiche tun , aber etwas anders.

Ich persönlich denke, MVP hat nur als eingängigen Begriff vor kurzem wieder eingeführt entweder zu Auseinandersetzungen zwischen semantischen Frömmler zu reduzieren, die darüber streiten, ob etwas wirklich MVC ist oder nicht oder Microsofts Rapid Application Development Tools zu rechtfertigen. Keiner dieser Gründe in meine Bücher rechtfertigen ihre Existenz als separate Design-Muster.

Beantwortet am 25/08/2008 um 22:22
quelle vom benutzer

stimmen
85

MVP: die Aussicht ist verantwortlich.

Die Aussicht, in den meisten Fällen schafft seinen Moderator. Der Präsentator wird mit dem Modell interagieren und die Ansicht über eine Schnittstelle manipulieren. Die Ansicht wird manchmal mit dem Moderator kommunizieren, sich in der Regel durch einige Schnittstellen. Das kommt auf die Umsetzung; haben Sie die Ansicht wollen Methoden auf den Vortragenden nennen oder möchten Sie die Ansicht Ereignisse haben die Vortragenden zu zuhört? Es läuft darauf hinaus, dieses: Der Blick kennt den Moderator. Die Ansicht Delegierten auf den Vortragenden.

MVC: die Steuerung zuständig ist.

Der Controller wird erstellt oder basierend auf einem Ereignis / Anfrage abgerufen. Die Steuerung erstellt dann die entsprechende Ansicht und interagiert mit dem Modell, um die Ansicht zu konfigurieren. Es läuft darauf hinaus: Der Controller erstellt und verwaltet die Ansicht; die Ansicht ist Slave an die Steuerung. Der Blick weiß nicht, über die Steuerung.

Beantwortet am 06/08/2008 um 23:51
quelle vom benutzer

stimmen
58

Geben Sie hier image description

MVC (Model-View-Controller)

Der Eingang wird zunächst am Steuerpult gerichtet ist, nicht die Sicht. Das Eingangs könnte von einem Benutzer kommen mit einer Seite interagieren, aber es könnte auch von einfach einer bestimmten URL in einem Browser eingeben. In jedem Fall ist es ein Controller, der mit Schnittstelle wird einige Funktionen zu beginnen. Es gibt eine viele-zu-eins-Beziehung zwischen dem Controller und dem Blick. Das ist, weil ein einzelner Controller verschiedene Ansichten wählen kann basierend auf dem Vorgang wird ausgeführt gerendert werden. Notieren Sie sich den einen Weg Pfeil von Controller anzuzeigen. Dies liegt daran, die Aussicht hat keine Kenntnis von oder Verweis auf die Steuerung. Die Steuerung funktioniert das Modell übergibt zurück, so dass es Wissen zwischen der Ansicht und dem erwarteten Modell wird in sie vergangen, aber nicht der Controller dient es auf.

MVP (Model-View-Presenter)

Die Eingabe beginnt mit der Ansicht, nicht der Moderator. Es gibt eine Eins-zu-Eins-Abbildung zwischen der Ansicht und dem zugehörigen Presenter. Die Ansicht enthält einen Verweis auf den Moderator. Der Moderator reagiert auch auf Ereignisse aus der Sicht ausgelöst wird, so dass ihr bewusst die Ansicht seiner zugeordnet. Der Presenter aktualisiert die Ansicht auf der Grundlage der angeforderten Aktionen, die es auf dem Modell durchführt, aber die Aussicht ist nicht bekannt, Modell.

Weitere Nachschlagewerke

Beantwortet am 20/12/2015 um 02:10
quelle vom benutzer

stimmen
31

Auch daran zu erinnern ist, dass es verschiedene Arten von MVPs auch. Passive Ansicht und Supervising-Controller - Fowler hat das Muster in zwei Teile gebrochen.

Wenn Passive Ansicht sehen Sie die Ansicht implementieren typischerweise eine feinkörnige Oberfläche mit Eigenschaften Mapping mehr oder weniger direkt auf den darunter liegenden UI-Widget. Zum Beispiel könnten Sie eine ICustomerView mit Eigenschaften wie Name und Adresse haben.

Ihre Implementierung könnte wie folgt aussehen:

public class CustomerView : ICustomerView
{
    public string Name
    { 
        get { return txtName.Text; }
        set { txtName.Text = value; }
    }
}

Ihre Presenter - Klasse wird zum Modell und „Karte“ an die Ansicht sprechen. Dieser Ansatz wird als „Passive View“ genannt. Der Vorteil ist , dass die Aussicht ist einfach zu testen, und es ist einfacher zwischen UI - Plattformen (Web, Fenster / XAML, etc.) zu bewegen. Der Nachteil ist , dass Sie nicht Dinge wie Datenbindung nutzen können (was wirklich in Frameworks wie leistungsstarke WPF und Silverlight ).

Der zweite Geschmack von MVP ist der Supervising-Controller. In diesem Fall könnte Ihre Ansicht eine Eigenschaft hat Kunden genannt, die dann wieder auf das UI-Widgets datengebundene. Sie müssen nicht darüber nachdenken, Synchronisierung und Mikro-Management die Ansicht, und das Supervising Controller kann in und hilft Schritt bei Bedarf, zum Beispiel mit compled Interaktionslogik.

Der dritte „Geschmack“ von MVP (oder jemand würde es vielleicht nennen ein separates Muster) ist das Präsentationsmodell (oder manchmal bezeichnet Model-View-Viewmodel). Im Vergleich zum MVP Sie „merge“, um die M und P in eine Klasse. Sie haben Ihr Kundenobjekt, die UI-Widgets Daten gebunden sind, aber Sie haben auch zusätzliche UI-spesific Felder wie „IsButtonEnabled“ oder „IsReadOnly“ usw.

Ich denke , die beste Ressource , die ich zu UI - Architektur gefunden habe , von Jeremy Miller über an getan die Serie von Blog - Posts ist das Build - Ihr eigenes CAB Serie Inhaltsverzeichnis . Er bedeckte alle Aromen von MVP und zeigte C # -Code , um sie umzusetzen.

Ich habe gebloggt auch über die Model-View-Viewmodel - Muster im Rahmen der Silverlight über bei YouCard Re-visited: Umsetzung des Viewmodel Musters .

Beantwortet am 08/08/2008 um 06:55
quelle vom benutzer

stimmen
31
  • MVP = Model-View-Presenter
  • MVC = Model-View-Controller-

    1. Beide Präsentationsmuster. Sie trennen die Abhängigkeiten zwischen einem Modell (man denkt Domain-Objekte), den Bildschirm / Web-Seite (die Ansicht), und wie Sie Ihre UI sollte verhalten (Moderator / Controller)
    2. Sie sind ziemlich ähnlich in Konzept, Leute initialisieren der Presenter / Regler unterschiedlich je nach Geschmack.
    3. Ein großer Artikel über die Unterschiede ist hier . Am bemerkenswertesten ist , dass MVC - Muster das Modell Aktualisieren des View hat.
Beantwortet am 05/08/2008 um 11:22
quelle vom benutzer

stimmen
15

Beide Frameworks Ziel Bedenken zu trennen - zum Beispiel die Interaktion mit einer Datenquelle (Modell), Anwendungslogik (oder Drehen diese Daten in nützliche Informationen) (Controller / Presenter) und Anzeigecode (Ansicht). In einigen Fällen kann das Modell auch ein Daten dreht Quelle in eine höhere Abstraktionsebene als auch verwendet werden. Ein gutes Beispiel hierfür ist das MVC Storefront - Projekt .

Es gibt eine Diskussion hier in Bezug auf die Unterschiede zwischen MVC vs MVP.

Die Unterscheidung ist, dass in einer MVC Anwendung traditionell die Sicht hat und der Controller mit dem Modell interagieren, aber nicht miteinander.

MVP-Designs haben die Presenter das Modell zugreifen und mit dem Blick in Wechselwirkung treten.

Having said that, ASP.NET MVC von diesen Definitionen ein MVP-Framework ist, da der Controller das Modell greift auf die Ansicht zu füllen, die keine Logik haben gemeint ist (zeigt nur die Variablen, die von der Steuerung zur Verfügung gestellt).

Um vielleicht eine Vorstellung von der ASP.NET MVC Unterscheidung von MVP zu erhalten, überprüft diese MIX Präsentation von Scott Hanselman.

Beantwortet am 05/08/2008 um 11:20
quelle vom benutzer

stimmen
12

Beide versuchen, Muster Präsentation und Geschäftslogik zu trennen, Business-Logik von UI Aspekte Entkopplung

Architektonisch ist MVP Seite Steuerungs basierter Ansatz, bei dem MVC Front Controller basierter Ansatz ist. Das bedeutet, dass in MVP Standard-Web-Formular Seite Lebenszyklus verbessert werden nur durch die Geschäftslogik von Code hinter extrahieren. Mit anderen Worten, Seite ist die eine Service HTTP-Anfrage. Mit anderen Worten, ist MVP IMHO Webformular evolutionäre Art der Erweiterung. MVC auf anderen Seite ändert sich das Spiel komplett, da die Anforderung von Controller-Klasse abgefangen wird, bevor Seite geladen wird, wird die Geschäftslogik dort ausgeführt und dann am Ende aufgrund der Steuerung der Verarbeitung der Daten nur auf die Seite gekippt ( „Ansicht“) in diesem Sinn, MVC aussieht (zumindest für mich) viel zu Supervising Controller-Geschmack von MVP mit Routing-Engine verbessert

Beide ermöglichen TDD und haben Nachteile und upsides.

Entscheidung darüber, wie einer von ihnen wählen IMHO sollte auf der Grundlage, wie viel Zeit man investiert in ASP NET Webformular Art von Web-Entwicklung. Wenn man in Betracht ziehen würden sich in Web-Formulare gut, würde ich vorschlagen MVP. Wenn man in Dinge wie Lebenszyklus Seite etc MVC könnte ein Weg zu gehen hier nicht so wohl fühlen würde.

Hier ist noch ein weiterer Blog-Post Link ein wenig mehr Details zu diesem Thema geben

http://blog.vuscode.com/malovicn/archive/2007/12/18/model-view-presenter-mvp-vs-model-view-controller-mvc.aspx

Beantwortet am 21/09/2008 um 13:32
quelle vom benutzer

stimmen
11

Sie verfügen jeweils adressiert unterschiedliche Probleme und kann sogar zusammen etwas haben, kombiniert werden, wie unten

Das kombinierte Muster

Es gibt auch einen kompletten Vergleich von MVC, MVP und MVVM hier

Beantwortet am 13/03/2017 um 05:54
quelle vom benutzer

stimmen
9

Etwas , das ich nicht bekommen , ist , warum Bindungsdaten haben Testbarkeit zu reduzieren. Ich meine, ist eine Ansicht , effektiv basiert weg von dem, was als eine oder mehr Datenbankansichten, richtig gedacht werden könnte? Es könnte Verbindungen zwischen den Zeilen in verschiedenen Ansichten sein. Alternativ können wir objektorientierte anstelle von relationalen sprechen, aber das eigentlich nichts ändern - wir haben noch ein oder mehr verschiedenen Datenelemente.

Wenn wir die Programmierung als Datenstrukturen + Algorithmen betrachten, dann wäre es nicht am besten, die Datenstrukturen zu haben, wie möglich, explizit gemacht, und dann Algorithmen zu entwickeln, die jeweils ein Stück Daten wie möglich auf so klein abhängen, mit minimaler Kopplung zwischen den Algorithmen ?

Ich spüre sehr Java-artige FactoryFactoryFactory Denkmuster hier - wir mehrere Ansichten, mehrere Modelle, mehrere Freiheitsgrade der ganzen Ort haben wollen. Es ist fast wie , dass die treibende Kraft hinter MVC und MVP und so weiter ist. Lassen Sie mich jetzt fragen: Wie oft wird die Kosten , die Sie dafür bezahlen (und es auf jeden Fall ist ein kosten) wert?

Ich sehe auch keine Diskussion darüber, wie effizient Zustand zwischen HTTP-Anforderungen zu verwalten. Haben nicht gelernt, die wir von den funktionell Leuten (und den voluminösen durch zwingende Spaghetti Fehler gemacht), dass Zustand ist schlecht und soll (und, wenn verwendet, sollte gut verstanden wird) minimiert werden?

Ich sehe eine Menge von Verwendung der Begriffe MVC und MVP ohne viele Beweise , dass die Menschen kritisch über sie denken. Offensichtlich ist das Problem „sie“, mich oder beides ...

Beantwortet am 28/01/2009 um 22:11
quelle vom benutzer

stimmen
8

Es gibt viele Antworten auf die Frage, aber ich fühlte es eine Notwendigkeit für einige wirklich einfache Antwort ist eindeutig die beiden zu vergleichen. Hier ist die Diskussion, die ich gemacht, wenn ein Benutzer sucht nach einem Filmnamen in einem MVP und MVC App:

Benutzer: Klicken Sie auf ...

Ansicht : Wer ist das? [ MVP | MVC ]

User: Ich klickte nur auf die Suchtaste ...

Ausblick : Ok, halten Sie auf eine Sekunde .... [ MVP | MVC ]

( Ansicht Aufruf der Presenter | Steuerung ...) [ MVP | MVC ]

Ansicht : Hey Presenter | Controller hat ein Benutzer nur auf die Suchtaste angeklickt, was soll ich tun? [ MVP | MVC ]

Presenter | Controller : Hey Ansicht , gibt es eine Suchbegriffs auf dieser Seite? [ MVP | MVC ]

Ausblick : Ja, ... hier ist es ... „piano“ [ MVP | MVC ]

Moderator : Vielen Dank Ansicht , ... inzwischen suche ich den Suchbegriff auf der nach oben Modell , bitte zeigen Sie ihm / ihr ein Fortschrittsbalken [ MVP | MVC ]

( Presenter | Controllers ruft das Modell ...) [ MVP | MVC ]

Presenter | Controller : Hey Modell , Haben Sie eine Übereinstimmung für diesen Suchbegriff ?: „piano“ [ MVP | MVC ]

Modell : Hey Presenter | Controller , lassen Sie mich überprüfen ... [ MVP | MVC ]

( Modell macht eine Anfrage an die Filmdatenbank ...) [ MVP | MVC ]

( Nach einer Weile ... )

-------------- Dies ist, wo MVP und MVC zu divergieren beginnen ---------------

Modell : Ich fand eine Liste für Sie, Presenter , hier in JSON ist „[{ "name": "Piano Teacher", "Jahr": 2001}, { "name": "Piano", "Jahr": 1993} ]“[ MVP ]

Modell : Es gibt einiges Ergebnis verfügbar, Regler . Ich habe eine Feldvariable in meiner Instanz erstellt und füllte sie mit dem Ergebnis. Sein Name ist "searchResultsList" [ MVC ]

( Presenter | Steuerung dank Modell und wird zurück in die Ansicht ) [ MVP | MVC ]

Moderator : Vielen Dank für warten Ansicht , fand ich eine Liste der Ergebnisse für Sie passende und ordnete sie in ein vorzeigbar Format: [ „Piano Teacher 2001“, „Piano 1993“]. Bitte teilen Sie den Benutzer in einer vertikalen Liste. Geben Sie bitte auch die Fortschrittsbalken verbergen jetzt [ MVP ]

Controller : Vielen Dank für warten Ansicht , ich habe gefragt Modell über Ihre Suchanfrage. Sie sagt , sie eine Liste passender Ergebnisse und gespeichert sie in einer Variablen namens „searchResultsList“ in seiner Instanz gefunden hat. Sie können es von dort. Geben Sie bitte auch die Statusleiste verbergen jetzt [ MVC ]

Ausblick : Vielen Dank Moderator [ MVP ]

Ausblick : Danke „Controller“ [ MVC ] (Nun ist die Ansicht selbst in Frage zu stellen: Wie soll ich die Ergebnisse präsentiere ich von dem bekommen Modell ? An den Benutzer Sollte das Herstellungsjahr des Films kommt erstes oder letztes ... Soll es? sein in einer vertikalen oder horizontalen Liste? ...)

Falls Sie sich interessiert, ich habe zu tun , eine Reihe von Artikeln geschrieben mit App Architekturmuster (MVC, MVP, MVVP, saubere Architektur, ...) von einem Github begleitet Repo hier . Auch wenn die Probe für Android geschrieben wird, können die zugrunde liegenden Prinzipien auf jedes Medium angewendet werden.

Beantwortet am 06/04/2018 um 13:51
quelle vom benutzer

stimmen
8

In Android gibt es Version von mvc die mvp ist: Was ist MVP?

Die MVP-Muster ermöglichen die Präsentationsschicht von der Logik trennen, so dass alles darüber, wie die Schnittstelle arbeitet von getrennt wird, wie wir es auf dem Bildschirm darstellen. Im Idealfall würden die MVP-Muster erreicht wird, dass gleiche Logik Ansichten völlig anders und austauschbar haben könnte.

Das erste, was zu klären ist, dass MVP nicht ein architektonisches Muster ist, es ist nur verantwortlich für die Präsentationsschicht. In jedem Fall ist es immer besser ist es für Ihre Architektur zu verwenden, die es überhaupt nicht verwenden.

Ein Beispiel für mvp ist https://github.com/antoniolg/androidmvp

Was ist MVC? MVC-Architektur ist eine der ältesten Muster für die Trennung von Bedenken zu erreichen. MVC besteht aus drei Schichten, nämlich, Model, View und Controller.

Klassische MVC zu einer Zeit vorhanden war, als jede Steuer / Gadget, das auf dem Bildschirm vorhanden war stumm betrachtet und jede Steuerung mit einem eigenen Controller gepaart, um die Benutzer-Interaktionen auf sie geschehen zu verwalten. Also, wenn 10 Geräte vorhanden sind, dann 10-Controller haben zu existieren. In diesem Szenario wird jedes Gerät als eine Ansicht gezählt. Das Aufkommen von Windows-GUI-Systemen geändert dieses Bild. Die Control-Controller-Beziehung wurde obsolet. Kontrollen gewannen die Intelligenz auf die Aktionen vom Benutzer initiiert zu reagieren. In der Windows-Welt, ist der Ansicht, eine Oberfläche, auf der alle Steuerelemente / Gadgets existieren, daher besteht ein Bedarf nur ein Controller für. Anzeigen können Ereignisse empfangen und erreichen für Steuerungen helfen Weiterverarbeitung zu tun.

Beispielcode für mvc in android http://androidexample.com/Use_MVC_Pattern_To_Create_Very_Basic_Shopping_Cart__-_Android_Example/index.php?view=article_discription&aid=116&aaid=138

Der Unterschied zwischen beiden ist hier verfügbar http://www.codeproject.com/Articles/288928/Differences-between-MVC-and-MVP-for-Beginners

Jetzt Aus meiner Erfahrung müssen Sie MVP für Android basiertes Projekt verwenden, da es Version von MVC Modell erweitert.

Beantwortet am 02/07/2016 um 07:15
quelle vom benutzer

stimmen
8

Ich habe sowohl MVP und MVC und obwohl wir früher als Entwickler auf die technischen Unterschiede der beiden Muster für den MVP der Punkt zu konzentrieren, neigen dazu, in IMHO viel mehr von Adoption ist als irgend etwas anderes zu erleichtern.

Wenn ich in einem Team gerade arbeite, die bereits als ein guter Hintergrund für Web-Entwicklung Stil bildet es ist viel einfacher, als MVP MVC einzuführen. Ich würde sagen, dass MVP in diesem Szenario ein schneller Sieg ist.

Meine Erfahrung sagt mir, dass ein Team von Web-Formularen zu MVP bewegt und dann von MVP zu MVC ist relativ einfach; Bewegen von Web-Formularen zu MVC ist schwieriger.

Ich lasse hier einen Link zu einer Reihe von Artikeln, ein Freund von mir über MVP und MVC veröffentlicht.

http://www.qsoft.be/post/Building-the-MVP-StoreFront-Gutthrie-style.aspx

Beantwortet am 02/01/2009 um 11:35
quelle vom benutzer

stimmen
7

In MVP ziehen die Ansichtsdaten von dem Moderator, den ansaugt und bereitet / normalisiert Daten aus dem Modell, während in MVC die Controller Daten von dem Modell zieht und festgelegt, durch Druck in der Ansicht.

In MVP können Sie eine einzelne Ansicht mit mehreren Arten von Moderatoren arbeiten haben und einen einzigen Moderator mit unterschiedlichen mehreren Ansichten arbeiten.

MVP verwendet in der Regel eine Art eines verbindlichen Rahmens, wie Microsoft WPF verbindlichen Rahmen oder verschiedenen verbindlichen Rahmen für HTML5 und Java.

In diesen Rahmenbedingungen ist die UI / HTML5 / XAML, bewusst, was Eigenschaft des Moderators jeden UI-Element angezeigt wird, so dass, wenn man einen Blick auf einen Moderator binden, der Blick für die Eigenschaften sieht und weiß, wie Daten von ihnen zu ziehen und wie sie setzen, wenn ein Wert in der Benutzeroberfläche durch den Benutzer geändert wird.

Also, wenn beispielsweise das Modell ein Auto ist, dann ist der Moderator etwas wie ein Auto-Moderatoren, macht die Auto-Eigenschaften (Jahr, Hersteller, Sitze usw.) zur Ansicht. Der Blick weiß, dass das Textfeld ‚Autohersteller‘ braucht, um den Bildschirm Moderator Maker Eigenschaft genannt.

Sie können dann auf die Ansicht viele verschiedene Arten von Moderator binden, müssen alle Hersteller Eigenschaft haben - es kann aus einem Flugzeug, Zug oder was auch immer, wird die Ansicht nicht. Die Ansicht zieht Daten aus dem Moderator - egal welche - solange es eine vereinbarte Schnittstelle implementiert.

Diese verbindlichen Rahmen, wenn Sie es ausziehen, es ist eigentlich der Controller :-)

Und so können Sie auf MVP aussehen als eine Weiterentwicklung von MVC.

MVC ist groß, aber das Problem ist, dass in der Regel seine Controller-per-View. Controller A weiß, wie Sichtfelder A. einstellen Wenn nun Sie anzeigen A wollen Daten von Modell B anzuzeigen, benötigen Sie Controller A Modell B zu wissen, oder Sie brauchen Controller A ein Objekt mit einer Schnittstelle zu empfangen - das ist wie MVP nur ohne die Bindungen, oder benötigen Sie den UI-Set Code in Controller-B neu zu schreiben

Fazit - MVP und MVC sind beiden entkoppeln von UI-Muster, aber MVP verwendet in der Regel eine Bindungs ​​Framework, das MVC darunter ist. ALSO ist MVP auf einem höheren Niveau als Architektur MVC und ein Wrapper Muster oben von MVC.

Beantwortet am 07/06/2013 um 22:16
quelle vom benutzer

stimmen
6

Meine bescheidene kurze Sicht: MVP ist für große Personenwaagen und MVC für kleine Skalen. Mit MVC, ich fühle mich irgendwann das V und das C kann eine zwei Seiten einer einzigen unteilbaren Komponente eher direkt an M gebunden zu sehen ist, und man unweigerlich dazu fällt, wenn hinunter zu kürzeren Skalen, wie UI-Steuerelemente und Basis-Widgets. Auf dieser Ebene der Granularität, macht MVP wenig Sinn. Wenn man im Gegensatz zu größeren Skalen geht, wird die richtige Schnittstelle wichtiger, das gleiche mit eindeutiger Zuordnung von Verantwortlichkeiten, und hier kommt MVP.

Auf der anderen Seite, diese Skala Regel eines Daumens, Gewicht kann sehr wenig, wenn die Plattform Eigenschaften eine Art von Beziehungen zwischen den Komponenten begünstigen, wie mit dem Web, wo es scheint MVC einfacher zu implementieren, mehr als MVP.

Beantwortet am 20/02/2013 um 17:55
quelle vom benutzer

stimmen
5

Model View Controller

MVC ist ein Muster für die Architektur einer Software - Anwendung. Es trennt die Anwendungslogik in drei separate Teile, Modularität zu fördern und erleichtert die Zusammenarbeit und Wiederverwendung. Es macht auch Anwendungen flexibler und einladend iterations.It eine Anwendung in den folgenden Komponenten trennt:

  • Modelle für den Umgang mit Daten und Geschäftslogik
  • Controller für den Umgang mit der Benutzeroberfläche und Anwendung
  • Ansichten für den Umgang mit grafischen Benutzeroberfläche Objekte und Präsentation

dies eine wenig klarer zu machen, lassen Sie sich ein einfaches Einkaufslisten-App vorstellen. Alles, was wir eine Liste mit den Namen, die Menge und Preis der einzelnen Elemente wir in dieser Woche kaufen müssen wollen. wir werden im Folgenden beschreiben, wie wir einen Teil dieser Funktionalität mit MVC implementieren könnte.

Geben Sie hier image description

Model-View-Presenter

  • Das Modell ist die Daten , die in der Ansicht (User Interface) angezeigt werden.
  • Die Ansicht ist eine Schnittstelle , die auf diese Daten zu handeln Daten (Modell) und Routen Benutzerbefehle (Ereignisse) an den Presenter anzeigt. Die Ansicht hat in der Regel einen Hinweis auf seine Presenter.
  • Der Moderator ist der „Mann in der Mitte“ (durch den Controller in MVC gespielt) und hat Verweise auf beide, Ansicht und Modell. Bitte beachten Sie, dass das Wort „Modell“ irreführend ist. Es sollte vielmehr seine Business - Logik , die ein Modell abruft oder manipuliert . Zum Beispiel: Wenn Sie eine Datenbank zu speichern Benutzer in einer Datenbanktabelle haben und Ihre Ansicht will eine Liste von Benutzern angezeigt wird , dann würde der Moderator einen Verweis auf Ihre Datenbank Business - Logik (wie ein DAO) , von wo der Moderator eine Liste abfragt von Benutzer.

Wenn Sie eine Probe mit einfacher Implementierung sehen wollen , überprüfen Sie bitte diese Github Post

Ein konkreter Workflow von Abfragen und eine Liste der Benutzer aus einer Datenbank anzeigt könnte wie folgt funktionieren: Geben Sie hier image description

Was ist der Unterschied zwischen MVC und MVP - Muster?

MVC-Muster

  • Controller sind auf Verhalten basiert und kann über Ansichten geteilt werden

  • Kann für die Bestimmung verantwortlich sein, die Anzeige (Front Controller) anzuzeigen

MVP-Muster

  • Ansicht ist mehr lose mit dem Modell verbunden. Der Moderator ist verantwortlich für die Bindung des Modells zur Ansicht.

  • Einfacher zu Unit-Test, weil die Interaktion mit der Ansicht ist, über eine Schnittstelle

  • Normalerweise sehen zu Präsentator Karte 12.59. Komplexe Ansichten können mehrere Moderatoren haben.

Beantwortet am 29/11/2017 um 10:14
quelle vom benutzer

stimmen
3

Es gibt viele Versionen von MVC, diese Antwort über die ursprüngliche MVC in Smalltalk. Kurz gesagt, es ist Bild von mvc vs mvp

Dieser Vortrag droidcon NYC 2017 - Saubere App - Design mit Architektur - Komponenten stellt klar , es

Geben Sie hier image description Geben Sie hier image description

Beantwortet am 09/09/2015 um 02:34
quelle vom benutzer

stimmen
0

Es ist dieses schöne Video von Uncle Bob , wo er MVC & MVP am Ende kurz erklärt.

Was ich denke, ist MVP eine verbesserte Version von MVC ist, wo man im Grunde die Sorge trennen, wie Sie im Begriff, die Daten zeigen, die Sie haben. Presenter beinhaltet ein bisschen die Business-Logik der Benutzeroberfläche und es spricht über eine Schnittstelle, die es einfacher testen Sie Ihre UI Business-Logik in den verschiedenen Ansichten macht. MVC spricht immer noch über Schnittstellen (Grenzen) zu Klebstoffschichten, aber es hat keine solche Einschränkung UI Präsentationslogik zu verhängen. Other than that, ich nicht wirklich keine Unterschiede mehr sehen.

Beantwortet am 25/01/2018 um 21:24
quelle vom benutzer

stimmen
0

MVP

MVP steht für Model - View- Presenter. Das kam Anfang 2007 zum Bild auf die Microsoft Smart Client Windows-Anwendungen eingeführt.

Presenter ist als Aufsichtsfunktion in MVP handelt, die von Modellen Veranstaltungen und Business-Logiken Ansicht verbindlich.

View-Event-Bindung wird in Presenter aus einer Sicht-Schnittstelle implementiert werden.

View ist der Initiator für Benutzereingaben und dann die Delegierten die Ereignisse Presenter und Moderator behandelt Bindungen Ereignis und erhält Daten von Modellen.

Pro: Ansicht ist, die nur UI keine Logiken Hohe Testbarkeit

Nachteile: Bit komplex und mehr Arbeit bei der Umsetzung von Ereignisbindungen

MVC

MVC steht für Model-View-Controllers. Controller ist verantwortlich für die Modelle und Rendering-Ansichten mit Bindungsmodellen.

Controller ist der Initiator, und es entscheidet, welche zu machen anzuzeigen.

Vorteile: Der Schwerpunkt auf Einzel - Prinzip Verantwortung Hohe Testbarkeit

Nachteile: Manchmal zu viel Aufwand für die Controller, wenn versuchen, mehrere Ansichten in demselben Controller zu machen.

Beantwortet am 12/01/2016 um 04:50
quelle vom benutzer

stimmen
-1

Die einfachste Antwort ist, wie die Ansicht mit dem Modell interagiert. In MVP wird das Modell auf den Vortragenden gebunden, die für die Aktualisierung der Ansicht verantwortlich ist. In MVC aktualisiert das Modell direkt die Ansicht.

Beantwortet am 16/11/2017 um 17:32
quelle vom benutzer

stimmen
-2

Hier gepostet oben ist eine Zusammenfassung der menschlichen Versagens und Unfähigkeit, die einfachste Handshake zwischen zwei Maschinen zu verstehen. Ich werde mit gesundem Menschenverstand erklären, um zu versuchen Sie alle bis aus diesem wahnhafte Idealismus zu wecken, die ihren Weg in die Köpfe die, die sie erstellen möchten gefunden haben. Und so dumm, wie alle diese Prozesse klingen, Tatsache ist, das Objektmodell (das ist die HTML-Datei ist) durch den Client-Rechner angefordert. Hier ist, wie es läuft alles.

  1. Ein Hyperlink gedrückt wird und eine einzelne Anforderung wird vom Client-Rechner an den Server gesendet. Der Server antwortet auf diese Anforderung mit einer Antwort durch das Objektmodell an den Kunden gesendet werden. (Bekannt einfach als „Response“).
  2. Der Server antwortet, indem sie ein Objektmodell Senden (Die HTML-Datei) an die Clients Machine (bekannt als Full Handshake).
  3. Der Clients Browser kann nun die „Ansicht“ durch Parsen, lexing / Tokenisieren, Render und dass Object Model Markup in eine GUI „Ansicht“ zu konvertieren.

Ich kann jetzt im Ruhestand, aber von Gosh euch hier streiten und völligem Unsinn diskutieren. Und ehrlich gesagt, egal was Sie ein Handshake zwischen zwei Maschinen nennen kann nicht alles sein, außerhalb eines einzigen Antrags, eine einzige Antwort des Objekts „Models“ und schließlich der Clients Browser Rendering „Ansicht“.

Und abschließend ist eine Ansicht nicht in einem Händedruck vorhanden sein. Das Objektmodell ist nur Markup für den Browser GUI Widget Sets und Eval Methoden von drei oder mehr Objektmodellen zu konvertieren. HTML, CSS und JavaScript. Und egal, wie viel jemand ein Server sagen kann, macht etwas aus dem üblichen Pferd Dung ist.

Der „Server“ ist nicht die „Controller“ es ist ein Ausrichter und leitet nur die Antwort durch ein Objekt „Model“ Antwort zu senden. Der Browser des Clients (die die wahrscheinliche-Controller sein würde), dann schafft die „Ansicht“ aus dem Objekt „Modell“ der Server hat nichts damit zu tun. Ihre Computersprache kann nicht in das Modell Objekt überhaupt bekommen, noch sie delegieren. es ist alles ein Markup Creator.

Das ganze Chaos ist einfach eine Seite Client-Browser „Controller“, die das „Modell“ analysiert die „View“ oder CMV oder MCV zu machen (gesendet als Modell in erster Ordnung) und man kann es nicht ändern. Aber man kann es nennen einfach einen Request, Response Object Model und Render-Ansicht oder RRMV.

Beantwortet am 31/12/2018 um 02:10
quelle vom benutzer

stimmen
-2

Viele Leute wissen nicht genau, was der Unterschied zwischen dem Controller und Presenter in MVC und MVP bzw. ist.

seine eine einfache Gleichung, wo

MVC View = Ansicht und Moderator von MVP

MVP Modell für Controller und Modell von MVC

Weitere Informationen dazu finden Sie http://includeblogh.blogspot.com.eg/2016/07/the-difference-and-relationship-between.html

Beantwortet am 31/07/2017 um 10:13
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more