Ich habe über Model View Controller, Model View Presenter, Model View ViewModel usw. nachgelesen, und im Allgemeinen scheint das zugrunde liegende Konzept ziemlich einfach zu verstehen: Halten Sie die hübschen visuellen und wissenschaftlichen Eingeweide so getrennt und ignorant voneinander wie möglich. Keine logische Erdnussbutter in der Designschokolade; cool, das gefällt mir.
Das Problem ist, dass ich in Bezug auf diesen dritten Teil immer noch ein bisschen unsicher bin ... den, der nicht als Modell oder Ansicht zu sehen ist. Jeder scheint seine eigene Vorstellung davon zu haben, wie er es nennen soll, was es tun soll, was richtig ist, was einfach falsch ist ... und ich bin verrückt, wenn ich herausfinden will, wann ein Presenter ein ViewModel wird und wann ein View nicht ' tu das nicht, weil das der Job des Moderators ist und--
Ich streife.
Anstatt jemanden zu bitten, den Unterschied zwischen ihnen zu erklären - weil das schon immer wieder gemacht wurde (ich weiß, ich habe mehr Artikel gelesen, als ich zählen kann) -, wäre ich neugierig, die Gedanken von a zu hören Nur wenige Programmierer des Modells haben sich zusammengeschustert.
Das heißt, was würden Sie diesen Entwurf als klassifizieren, und was vielleicht noch wichtiger ist, sehen Sie etwas, das offensichtlich scheiße ist? Sicher, ich würde gerne hören, dass es mir gut geht, wenn dies wirklich solides Design ist, aber ich würde viel lieber solide Ratschläge über Lob erhalten.
Hinweis: Ich werde "the Bridge" für den mysteriösen dritten Teil von Model-View-? unbewusste Vorschläge zu vermeiden, was es sein sollte.
Modell
- Ist die Autorität auf Daten.
- Erhält Informationen zu angeforderten Änderungen von der Bridge.
- Enthält und führt die gesamte Logik für die Beziehung zwischen Daten und anderen Daten aus.
Informiert die Bridge, wenn sich Daten ändern (für Daten, an denen die Bridge Interesse gezeigt hat).Textbearbeitung: Ermöglicht externen Teilnehmern (von denen sie nichts wissen), den Status oder die Berechnungsergebnisse zu überwachen.- Hat keine Kenntnis der Ansicht.
Aussicht
- Befasst sich mit der Bereitstellung einer Möglichkeit für den Benutzer, Daten anzuzeigen und zu bearbeiten.
- Erhält Informationen zu Datenaktualisierungen von der Bridge.
- Enthält und führt die gesamte Logik für die Präsentation von Daten und Steuerelementen für den Benutzer aus.
- Informiert die Bridge, wenn der Benutzer eine Aktion ausgeführt hat, die (möglicherweise) Auswirkungen auf das Modell hat.
- Informiert die Brücke darüber, an welchen Informationen sie interessiert ist.
- Hat keine Kenntnis des Modells.
Brücke
- Ist der Koordinator und Übersetzer zwischen dem Modell und der Ansicht.
- Ändert die Formatierung der Informationen, die zwischen dem Modell und der Ansicht übertragen werden.
- Erhält Informationen zu "Wer muss was wissen".
- Kennt sowohl das Modell als auch die Ansicht.
Zusätzliche Bemerkungen
- In komplizierteren Programmen gibt es häufig mehrere Modelle. In dieser Situation übernimmt die Bridge in der Regel die Koordinierung / Übersetzung zwischen den verschiedenen Modellen und wird so zur Autorität dafür, für welche Protocall- / API- / Design-Modelle sie erstellt werden soll. (Wenn Sie z. B. ein Kartenspielprogramm erstellen und ein alternatives Deck-Shuffling-Modell erstellen möchten, sollten Sie mithilfe der Bridge ermitteln, welche Funktionen für eine ordnungsgemäße Kommunikation mit der Bridge erforderlich sind.)
- In kleinen einfachen Programmen mit nur einer Ansicht und einem Modell "nimmt" die Bridge häufig an, welche Funktionen auf beiden Seiten verfügbar sind. Da Programme jedoch komplexer werden, wird empfohlen, dass die Ansicht (en) und das Modell (en) ihre Funktionalität an die Bridge melden, um Ineffizienzen und fehlerhafte Annahmen zu vermeiden.
Ich denke, das deckt es fast ab. Ich freue mich auf jeden Fall über Ihre Fragen zu dem Design, das ich tendenziell verwende, und ermutige Sie ebenfalls zu Vorschlägen.
Und wie immer vielen Dank für Ihre Zeit.