Model-View-Controller (MVC) erklärt durch die Bestellung von Getränken an der Bar

Wenn Sie in einer Bar waren, ist MVC nicht so schwer.

MVC-Frameworks (Model View Controller) sind ein wesentlicher Bestandteil beim Erstellen moderner Webanwendungen. Wenn Sie einen Raum mit Webentwicklern betreten, werden Sie wahrscheinlich mit Erwähnungen von Ruby on Rails, Angular oder Django bombardiert.

Im Allgemeinen kann die MVC-Logik verwendet werden, um fast jeden Webentwicklungsprozess zu beschreiben, der eine Sprache wie PHP, Ruby, Python oder JavaScript verwendet.

Dennoch…

Viele Webentwickler navigieren durch diese mysteriöse Welt, indem sie sich mit einem Lächeln im Gesicht durch das Unkraut hacken. Wenn ein leitender Entwickler oder Teamkollege sich den Code eines dieser Entwickler ansehen muss, wird er sofort aufschreien, gefolgt von einem schnellen Vortrag über gängige Codierungspraktiken.

Dies ist kein Weg durch das Leben! Tatsächlich kann das MVC-Muster in der modernen Webentwicklung leicht erklärt werden, indem ein Getränk bei einem Barkeeper bestellt wird. Und ja, das heißt, wenn Sie in einer Bar waren, können Sie das Hauptstrukturmuster verstehen, das alle Web-Apps gemeinsam haben.

Tapfer durch die Hindernisse hacken, bis die Realität trifft

Was ist das MVC-Muster?

  • Modell : Strukturiert Ihre Daten in einer zuverlässigen Form und bereitet sie gemäß den Anweisungen des Controllers auf
  • Ansicht : Zeigt dem Benutzer Daten in einem leicht verständlichen Format an, basierend auf den Aktionen des Benutzers
  • Controller : Nimmt Benutzerbefehle auf, sendet Befehle zur Datenaktualisierung an das Modell und sendet Anweisungen zur Anzeige an die Aktualisierungsschnittstelle.

Oder in Diagrammform:

Das war langweilig Auf die Bar.

Ein Webentwickler für Anfänger betritt eine Bar…

Sie betreten an einem Freitagabend eine Bar und nähern sich dem Barkeeper. Da die Bar bereits überfüllt ist, drängen Sie sich durch eine Menschenmenge, bis Sie endlich die Aufmerksamkeit des Barkeepers auf sich ziehen, und Sie platzen heraus: "One Manhattan, bitte!"

Sie sind der Benutzer und Ihre Getränkebestellung ist die Benutzeranforderung . Für Sie ist das Manhattan nur Ihr Lieblingsgetränk, und Sie wissen ziemlich zuverlässig, dass dies ein süßes und köstliches Getränk sein wird.

Der Barkeeper nickt Ihnen kurz zu. Für den Barkeeper ist das Manhattan kein leckeres Getränk, sondern nur eine Reihe von Schritten:

  1. Schnapp dir ein Glas
  2. Fügen Sie Whisky hinzu
  3. Wermut hinzufügen
  4. Bitter hinzufügen
  5. Getränk umrühren
  6. Kirsche hinzufügen
  7. Fragen Sie nach Kreditkarte und belasten Sie.

Das Gehirn des Barkeepers ist der Controller . Sobald Sie das Wort „Manhattan“ in einer Sprache sagen, die sie verstehen, beginnt die Arbeit. Diese Arbeit ähnelt der Herstellung einer Margarita oder eines Erdbeer-Daiquiris, verwendet jedoch unterschiedliche Zutaten, die niemals verwechselt werden. Der Barkeeper kann nur die Werkzeuge und Ressourcen verwenden, die sich hinter der Bar befinden. Dieser begrenzte Werkzeugsatz ist das Modell und umfasst Folgendes:

  • Barkeeper Hände
  • Schüttler / Mischgeräte
  • Liköre
  • Mischungen
  • Brille
  • Garnierungen

Vielleicht haben sie in einer schickeren Bar einen Roboterassistenten! Oder ein automatischer Getränkemischer. Es spielt für Ihren Barkeeper keine Rolle, der nur die verfügbaren Ressourcen nutzen kann.

Schließlich ist das fertige Getränk, das Sie sehen und konsumieren können, die Ansicht. Die Ansicht wird aus den begrenzten Optionen des Modells erstellt und über den Controller (dh das Gehirn des Barkeepers) angeordnet und übertragen.

gewonnene Erkenntnisse

  • Willst du noch einen Drink? Das Schreien auf dein leeres Glas, die Aussicht, wird dir absolut nichts nützen. Sie müssen mit dem Barkeeper sprechen.
  • Die Zeit zwischen dem Hören der Anfrage durch den Barkeeper und dem Beginn der Zubereitung des Getränks sollte absolut minimal sein. Dies wird manchmal als "Skinny Controller" bezeichnet. Mit anderen Worten, der Controller sollte ein Minimum an Logik enthalten und so viel wie möglich an das Modell delegieren. Ein großartiger Barkeeper wird nicht nur Rezepte auswendig lernen, sondern auch die Zutaten und Werkzeuge jeden Abend zuverlässig zubereiten, so dass ein minimaler Such- und Arrangieraufwand erforderlich ist, sobald die Kunden mit der Bestellung beginnen.
  • Könnte der Barkeeper alle Zutaten direkt in den Mund des Kunden gießen und erwarten, dass der Kunde sie herumwirbelt und das Getränk mischt? Ja, möglicherweise nehme ich an. Sie möchten so viel Logik wie möglich im Modell behalten und nicht in der Ansicht. Mit anderen Worten, die Zubereitung des Getränks hinter der Bar ist dem Mischen im Mund des Kunden vorzuziehen.
  • Wenn Sie ein Bier bestellen, muss der Barkeeper kaum etwas tun. Vielleicht nehmen sie einfach die Kappe ab und geben Ihnen das Getränk. Davon abgesehen müssen Sie immer noch den Barkeeper anfordern. Das Bier wird nicht magisch vor Ihnen erscheinen.

An die Webentwicklung binden

So läuft der gleiche Prozess in einer modernen Web-App ab:

  • Der Benutzer stellt eine Anfrage entlang einer Route, sagen wir / home.
  • Der Controller empfängt diese Anforderung und gibt einen bestimmten Satz von Befehlen an, die sich auf diese Route beziehen. Diese Anweisungen können entweder dazu dienen, dass die Ansicht eine bestimmte Seite aktualisiert oder bereitstellt, oder dass das Modell eine bestimmte Logik ausführt. Nehmen wir an, dieser Anforderung ist eine Logik zugeordnet.
  • Das Modell führt die Logik aus, zieht aus einer Datenbank und sendet eine konsistente Antwort basierend auf den Anweisungen des Controllers zurück.
  • Der Controller übergibt diese Daten dann an die Ansicht, um die Benutzeroberfläche zu aktualisieren.

Wenn eine Anforderung eingeht, muss sie zuerst an die Steuerung gesendet werden, bevor sie in Anweisungen für die Ansicht oder das Modell konvertiert werden kann. Der Wikipedia-Artikel zu Ruby on Rails enthält eine weitere Übersicht, wenn Sie mehr suchen.

Jedes Mal, wenn Sie ein neues Webentwicklungsframework erlernen müssen, werden Sie auf dieses konsistente MVC-Muster stoßen. Und wenn sich ein bestimmtes Framework davon unterscheidet, können Sie sicher sein, dass die Autoren ihr neues Muster mit Verweisen auf MVC erläutern.

Dies sollte das Lernen erheblich erleichtern. Sobald Sie einmal mit MVC entwickelt haben, kann jedes neue Framework in Ihre Komfortzone passen.

Hat Ihnen dieser Leitfaden gefallen? Lass es mich in den Kommentaren wissen!