Frage

Ich kann nicht verstehen was MVC ist, welche Einstellung oder Programmiermodell sollte ich erwerben so MVC Zeug auf meinem Kopf sofort „Glühbirne“ kann? Wenn nicht sofort, was einfache Programme / Projekte soll ich zunächst versuchen, dies zu tun, kann ich anwenden, um die netten Dinge MVC-Programmierung bringt.

OOP ist intuitiver und einfacher, Objekt ist überall um uns herum, und die Vorteile der Wiederverwendung von Code unter Verwendung von OOP-Paradigma sofort zu jedermann klicken. Man kann wahrscheinlich niemand über OOP in wenigen Minuten sprechen und einige Beispiele belehren und sie würden es. Während OOP irgendwie die Anschaulichkeit Aspekt der Programmierung erhöht, scheint MVC das Gegenteil zu tun. Ich bin immer negative Gedanken, dass einige zukünftigen Arbeitgeber (oder sogar Kunden) auf mich herabsehen würden nicht MVC-Technologie.

Obwohl ich wahrscheinlich den skinnable Aspekt der MVC, aber wenn ich versuchen sie es zu meinem eigenen Projekt zu bewerben, ich weiß nicht, wo ich anfangen soll.

Und auch einige Programmierer haben auch unterschiedliche Ansichten darüber, wie MVC richtig zu erreichen.

Nehmen Sie diese zum Beispiel von Jeffs Post über MVC:

  

Die Aussicht ist einfach, wie Sie die legen   Daten aus, wie es angezeigt wird. Wenn du   eine Teilmenge von einigen Daten wollen, für   Beispiel meiner Meinung ist, dass a   Verantwortung des Modells.

Also vielleicht einige Programmierer verwenden MVC, aber sie die Ansicht oder der Controller irgendwie versehentlich eine Teilmenge der Daten zu extrahieren.

Warum können wir keine endgültige Definition von dem, was und wie MVC richtig zu erreichen?

Und auch, wenn ich für MVC .NET-Programme suchen, die meisten davon gilt für Web-Programme, nicht Desktop-Anwendungen, diese Intrige mich weiter. Meine Vermutung ist, das ist am vorteilhaftesten Web-Anwendungen gibt es etwa vermischte Ansicht (HTML) und Steuerung (Programmcode) in Desktop-Anwendungen nicht viel Problem.

War es hilfreich?

Lösung

Ich mag die Art und Weise Martin Fowler sagt:)

http://martinfowler.com/eaaCatalog/modelViewController.html

.. und von http://martinfowler.com/eaaDev/uiArchs.html :

  

Nehmen Model-View-Controller als ein Beispiel. Es wird oft als Muster bezeichnet, aber ich finde es nicht schrecklich nützlich es als ein Muster zu denken, weil es ziemlich viele verschiedene Ideen enthält. Verschiedene Menschen über MVC an verschiedenen Orten zu lesen nehmen unterschiedliche Vorstellungen davon und beschreiben diese als ‚MVC‘. Ist dies nicht genug Verwirrung verursacht Sie dann die Wirkung von Missverständnissen von MVC erhalten, die durch ein System der chinesischen flüstert entwickeln.

Andere Tipps

Sie durch das Lesen der Antworten beginnen konnte href="https://stackoverflow.com/questions/129921/what-is-mvc-model-view-controller"> diese Frage

MVC passt WebApps schön. Die meisten WebApps erhalten die Daten von DB-Prozess es nur ein wenig und zeigen sie an den Benutzer. DB Ihre Modellebene ist die Steuerung tut Verarbeitung und Ansicht emittiert nur HTML-Code.

Einige Leute denken Controller sollte nur die Daten vom Modell erhalten und er zu der Ansicht, aber ich denke, das bedeutet, dass die Controller sind nutzlos und so ist es nur MV Programmiermodell :) Aber ich verstehe sie, wenn Sie irgendeine Art von Verarbeitung verwenden, Sie gehen es mehr als einmal verwenden und somit ist es besser, das zu tun, auf der Modellebene, kann es zwischen den verschiedenen Teilen von Anwendungen auf diese Weise gemeinsam genutzt werden.

Sie müssen MVC nicht für Desktop-Apps nutzen, in der Tat, ich bin nicht sicher, ob dieses Modell für große Anwendungen arbeiten, die in der Regel diejenigen, Desktops sind. Zu oft wollen Sie eine „Komponente“ verwenden, was Sie die gleichen Daten füttern können und die gleiche Benutzeroberfläche aus ihm heraus, aber in verschiedenen Teilen der App bekommen, und es führt nur zu kopieren Code um mit MVC.

Ich fand das MVC-Paradigma oft viel zu aufgebläht. Eine einfache Modell / Ansicht (ohne Controller) ist leichter zu verstehen und leichter zu implementieren.

Die meisten Menschen verstehen, dass einige Klassen die Daten enthalten (Modell) und die Logik, um die Daten zu laden / speichern und eine andere Klasse zeigt, dass Daten (Ansicht). Geben Sie ihm ein wenig Klebstoff ein Dokument (so etwas wie ein Dokumentenmanager) zu laden und Sie sind fertig.

Eine "typische" MVC Implementierung würde:

  • Ansichten - macht die Daten für die Endbenutzer zu sehen und gibt ihnen Objekte Benutzeroberfläche mit den Daten zu interagieren (aber nicht, dass die Interaktion zu handhaben)
  • Controller (en) - übernimmt die Benutzer-Interaktion und Manipulation von Daten zwischen den Ansichten und dem Modell
  • Reisen
  • Modell - Griff Speicherung von Daten und die Darstellung der Daten für die Anwendung

Eine häufige Verwendung des MVC-Musters würde der HTML / CSS / Browser für die Ansicht Teil einer Web-Anwendung sein, Rendering, die PHP / Skriptsprache auf Anwendungsebene, die als die Steuerung und MySQL oder eine ähnliche Datenbank wie das Modell handeln (die können oder auch nicht eine Art von ORM-Framework vor ihm haben).

Die Wahrheit ist, nur sehr wenige Menschen MVC verwenden in genau diesem Format, und das aus gutem Grund (meiner Meinung nach). Verschiedene Anwendungen haben unterschiedliche Bedürfnisse und Design-Anforderungen und es ist vorteilhaft, die Muster zu biegen, was notwendig ist. In diesen Tagen, „MVC“ scheint eher die Verwendung eines Rahmens zu beschreiben, die die Schichten einer Anwendung als das spezifische Model-View-Controller-Muster isoliert.

Von einem Arbeitgeber Perspektive, was wirklich (oft) gesucht wird, ist, dass Abstraktionsschicht und die Erfahrung, die aus dem Aufbau eine n-Schicht Anwendung kommt. Es ist ein ziemlich beträchtlicher mentaler Sprung, was geschieht, wenn Sie von der Arbeit in einer App zu bewegen, die nicht nur in vertikale Funktionen aufgeteilt werden können, aber in horizontale Schichten von Merkmalen als auch.

Als Hinweis, Enthäuten ist wirklich nur ein Aspekt einer bestimmten Schicht, können Sie die Datenquellen auf der Modellschicht ändern, wird die Methoden der Manipulation der Daten (ein neuer Algorithmus zum Beispiel) an der Steuerungsschicht und rollen sie aus nach und nach, ohne die anderen Schichten zu ändern.

Vielleicht nach der Wikipedia Artikel um weitere Implementierungen können Sie sich beziehen. Es hat Links zu Implementierungen von MVC als GUI-Frameworks rel="nofollow .

MVC ein Muster ist, und es funktioniert gut mit OOP, sind die beiden nicht exklusiv - ich würde sagen, dass sie orthogonal waren. Das MVC-Muster versucht, den Anzeigecode (V) aus den Daten (M) und den Ablauf der Steuerung (C) zu trennen.

Wenn Sie für „MVC .Net“ suchen Sie mit ziemlicher Sicherheit eine Menge Hits für Web-Anwendungen erhalten, weil die ASP.Net MVC-Framework vor kurzem veröffentlicht wurde, und dies ist eine Anwendung des MVC-Muster auf ASP.Net Programmierung, daher ist es für die Entwicklung von Websites verwendet werden. Wie Sie vorschlagen, gibt es keinen Grund ist nicht das Muster gilt für Desktops zu apps.

Wenn Sie eine harte Zeit mit MVC, die ich empfehlen würde im Allgemeinen zu lesen up Muster ein Gefühl dafür zu bekommen, wie die Leute reden über die Modellierung Probleme / Lösungen Muster verwenden, dann genauer Blick auf MVC.

Bearbeiten Angeregt durch den Hinweis auf Fowler, sein Buch Patterns of Enterprise Application Architectur e ein ausgezeichneter Ort ist auf MVC und anderen Mustern zu lesen.

  

Das MVC-Paradigma ist eine Möglichkeit, eine Anwendung in drei Teile zu brechen: das Modell, die Ansicht und der Controller. MVC wurde ursprünglich entwickelt, um die traditionellen Eingabe, Verarbeitung, Ausgabe Rollen in GUI Bereich abzubilden.

Die Benutzereingabe, die Modellierung der Außenwelt und die visuelle Rückmeldung an den Benutzer werden getrennt und behandelt nach Modell, Bildfenster und Controller-Objekte. Die Steuerung interpretiert Maus- und Tastatureingaben von dem Benutzer und ordnet diese Benutzeraktionen in Befehle, die das Muster gesendet werden, und / oder Darstellungsfeld die entsprechende Änderung zu bewirken. Das Modell schafft ein oder mehr Datenelemente, reagiert auf Anfragen über seinen Zustand, und reagiert auf Anweisungen Zustand zu ändern. Das Ansichtsfenster verwaltet einen rechteckigen Bereich des Displays und ist verantwortlich für die Daten an den Benutzer durch eine Kombination von Grafiken und Text präsentiert ... mehr lesen & sogar mehr .

Im Kern MVC nur ein spezieller Fall der Trennung von Bereichen ist: Ein Teil des Codes verantwortlich ist, die Daten zu speichern, ein zweiter chunk ist verantwortlich für die Daten zu manipulieren, und ein drittes kümmert mit dem Benutzer zu interagieren.

Jedes dieser Stücke können in einer OO-Weise implementiert werden oder nicht - MVC und OOP sind orthogonal. (Obwohl, meiner Erfahrung nach, MVC-Anwendungen und Frameworks sind sehr wahrscheinlich OO sein.)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top