Wie Gang of Four-Design Patterns passen in das MVC-Paradigma?
Hab ich grübelte über Design Patterns für einige Zeit jetzt und ich bin gerade erst anfangen zu sehen, wie ich könnte eigentlich beginnen, die etwas von diesen absichtlich in meiner Entwicklung. Ich bin allerdings immer noch verwirrt über Ihre Behandlung von MVC zu Beginn des Buches und wie es sich auf den rest des Buches.
Meisten frameworks die ich gearbeitet habe, mit - Frühjahr, Yii, ASP.NET und auch in Objective-C, Cocoa (UIKit) - sorgen um das MVC-Paradigma. Ich bekomme MVC, weil für mich ist es eine nützliche Methode zum klassifizieren von Objekten und wie sollten Sie Nachricht oder miteinander interagieren. Plus, diese Rahmenbedingungen Art von Kraft, es auf Sie, auch wenn Sie die Einstellung nicht hin um zu denken, in das MVC-Weg.
Habe ich auch das Gefühl, dass ich verstehe, ist die Prämisse der Design Patterns: Sie wirklich nicht wie Unterklassen, die Sie lieben abstrakte Schnittstellen, und Streben Sie nach loser Kopplung. Ich kann nicht sagen, ich verstehe all die Muster, die noch oder wie Sie nützlich sind, aber ich bin immer ein Gefühl für Sie.
Meine Frage ist: was ist das zusammenspiel zwischen MVC und design patterns? Was waren Sie immer in das erste Kapitel des Buches mit der MVC-Anwendung Beispiel? Sind bestimmte design-patterns einfach nicht relevant in dem MVC-Paradigma? Ich Frage mich zum Beispiel, wie der Befehl Muster soll passen in MVC. Es scheint unglaublich nützlich, aber brauchen wir erstellen ein CommandModel
und CommandController
zu senden, zu anderen Controllern? Wir erstellen eine Command
Objekt wie vorgeschrieben in dem Buch? Im Grunde Frage ich mich, ob die Ideen von MVC und Design Patterns sind völlig zusammenhanglos und ich weiß einfach nicht verstehen, oder wenn es gibt einige Muster, die nicht passen in die Form.
- das könnte ein guter read: stackoverflow.com/questions/3148097/mvc-and-command-pattern
- Ich denke, dass der Punkt, dass der erste Abschnitt (es ist tatsächlich Kapitel 2) war es zu zeigen, dass diese real sind Konzepte in realen Programmen, nicht nur eine weitere wissenschaftliche Arbeit mit erhabenen Ideen aus dem Elfenbeinturm.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Meine persönliche Meinung ist, dass MVC ist eine vereinfachte version des Observer-Musters, das ist eine vereinfachte version von dem Mediator-Muster.
MVC: Ein Model, Einen view, der Controller verwaltet die Kommunikation zwischen Ihnen.
Observer-Muster: Ein Modell, Multiples Ansichten ( Beobachter/Teilnehmer ), und der Verlag verwaltet die Kommunikation
Mediator Pattern: verschiedene Modelle, Verschiedene Ansichten, und der mediator leitet die Kommunikation zwischen Ihnen.
MVC im GoF Buch ist für den desktop, es benutzt das observer-Muster auf Ansichten aktualisieren. Der Befehl beispielsweise im GoF Buch ist für einen Redakteur.
Gibt es andere Varianten von MVC, in denen die Verwendung anderer design-Muster, die möglicherweise nicht offensichtlich sein:
Was ist der Unterschied zwischen MVC und MVVM?
Präsentation Abstraktion Kontrolle
Dem GoF-Buch sagt:
MVC ist ein Muster. Aber es deckt nur einen kleinen Aspekt einer web-Anwendung. Ein weiteres häufiges Muster, das verwendet wird mit MVC ist das Repository. Diese sind in der Architektur Muster.... Ihr Umfang hat einen größeren Einfluss auf das Gesamtprojekt.
die GOF-Muster stellen sich in wenig Möglichkeiten, alle über dem Platz. Sie kann dabei helfen, MVC-Infrastruktur je nach design-Entscheidungen. zB, Strategie bekommt viel verwendet, so können Sie plug-in verschiedene Möglichkeiten, Dinge zu tun, wie "Authentifizierung" etc..
Du musst nicht verwenden Sie die Muster, wie Sie sind, Sie don ' T haben sogar die exakt gleiche code-Struktur. Ihr mehr die design-Prinzip /Ziel des Musters, die Sie verwenden, in das design.
MVC ist eine architektonische Muster. Es passt perfekt mit den anderen design-patterns wie Command-Muster. Aber Sie gelten nicht für Muster, nur weil Sie existieren, und Sie sind geschrieben in einer autoritativen Buch. Sie Muster anwenden, wenn Sie eine Programmier - /design-problem und es ist ein Weg, um dieses problem zu lösen, die entdeckt wurde, von jemand anderem und nieder geschrieben wurde. Die Art und Weise, ein problem zu lösen, ist ein Muster. Zum Beispiel, Sie haben eine Anwendung, die speichert die Daten in der Datenbank. Daten, die gespeichert werden, ist sehr Komplex: einige Datensätze eingefügt werden muss, werden einige Datensätze aktualisiert und einige gelöscht. Die Reihenfolge der Schritte ist wichtig, da die Datensätze eingefügt werden, in einer Tabelle abhängen Datensätze eingefügt werden in eine andere Tabelle. So, ein Datenbank-Transaktion verwendet werden muss. Einer der möglichen Wege zur Umsetzung der Transaktion ist die Verwendung von Command-Pattern. Die Art und Weise zu tun, es ist sehr gut erklärt in Larman ' s "Anwendung von UML und Patterns" Buch (Kapitel "die Gestaltung einer Persistenz-Framework mit Patterns", Abschnitt "Gestaltung einer Transaktion mit dem Befehl Muster" - scrollen Sie zu der Seite 556).
PersistentObject
ist ein abstraktes Modell der Klasse gibt. Alle anderen Modell-Klassen erweitern. In diesem Beispiel MVC-Umsetzung in der UI -, Anwendungs-und Domain-Schichten, aber Befehl ist implementiert, in der Persistenz-Schicht. Diese Muster helfen, um verschiedene Probleme zu lösen, und Sie sich gegenseitig unterstützen in diesem Beispiel.