Dieses Material ist Teil der Reihe „Einführung in die Unternehmensentwicklung“. Vorherige Artikel:
In diesem Artikel lernen wir etwas namens MVC kennen. Wir sprechen darüber, was MVC ist, gehen auf seine Geschichte ein, erkunden die grundlegenden Ideen und Konzepte von MVC, schauen uns Schritt für Schritt an, wie man eine Anwendung in Model-, View- und Controller-Module aufteilt, schreiben ein Erstellen Sie eine kleine Webanwendung mit Spring Boot und sehen Sie am Beispiel von Spring MVC, wie Daten von Java-Code an HTML-Seiten gesendet werden. Um dieses Material zu verstehen, müssen Sie mit Designmustern vertraut sein, insbesondere mit Beobachter und Fassade. Machen Sie sich mit HTTP-Anfragen und -Antworten vertraut, verstehen Sie die Grundlagen von HTML und wissen Sie, was Java-Annotationen sind. Schnappen Sie sich eine Tasse Kaffee und einen Snack und machen Sie es sich bequem. Lass uns anfangen.
Aus all dem können wir eine logische Schlussfolgerung ziehen. Ein komplexes System muss in Module unterteilt werden. Beschreiben wir kurz die Schritte, um diese Trennung zu erreichen.
Und so kommen wir zu einer Anwendung, die aus drei Modulen namens Model, View und Controller besteht. Fassen wir zusammen:
- zum Thema Networking
- über Softwarearchitektur
- über HTTP/HTTPS
- über die Grundlagen von Maven
- über Servlets (Schreiben einer einfachen Webanwendung)
- über Servlet-Container

Geschichte von MVC
Die Ideen hinter MVC wurden von Trygve Reenskaug formuliert, als er Ende der 1970er Jahre bei Xerox PARC arbeitete. Damals erforderte die Arbeit mit Computern ein gewisses Maß an Wissen und das ständige Studium umfangreicher Dokumentationen. Die Aufgabe, die Reenskaug zusammen mit einer Gruppe sehr starker Entwickler löste, bestand darin, die Interaktion eines normalen Benutzers mit dem Computer zu vereinfachen. Es galt, Werkzeuge zu schaffen, die einerseits äußerst einfach und verständlich sind und andererseits die Steuerung von Computern und komplexen Anwendungen ermöglichen. Reenskaug arbeitete in einem Team, das unter der Leitung von Alan Kay einen Laptop „für Kinder jeden Alters“ entwickelte – das Dynabook – sowie die SmallTalk-Sprache. Damals wurden die Konzepte einer benutzerfreundlichen Schnittstelle festgelegt. In vieler Hinsicht, Die Arbeit von Reenskaug und seinem Team beeinflusste die Entwicklung der IT-Welt. Hier ist eine interessante Tatsache, die nicht direkt auf MVC zutrifft, aber die Bedeutung dieser Entwicklungen verdeutlicht. Alan Kaygenannt„Als ich 1984 zum ersten Mal bei Apple ankam, war der Mac bereits auf dem Markt und Newsweek kontaktierte mich und fragte mich, was ich von dem Mac halte. Ich sagte: ‚Nun, der Mac ist der erste Personal Computer, der gut genug ist kritisiert werden.' Nachdem er 2007 das iPhone angekündigt hatte, brachte er es zu mir und reichte es mir. Er sagte: „Alan, ist das gut genug, um kritisiert zu werden?“ Und ich sagte: ‚Steve, mach es so groß wie ein Tablet und du wirst die Welt beherrschen.‘“ Nach drei Jahren, am 27. Januar 2010, stellte Apple das iPad mit einer Diagonale von 9,7 Zoll vor. Mit anderen Worten: Steve Jobs folgte fast genau dem Rat von Alan Kay. Reenskaugs Projekt dauerte 10 Jahre. Doch nach weiteren 10 Jahren kam die erste Veröffentlichung über MVC ans Licht. Martin Fowler, Autor mehrerer Bücher und Artikel zum Thema Softwarearchitektur, erwähnt, dass er MVC mit einer funktionierenden Version von Smalltalk studiert hat. Da es lange Zeit keine Informationen über MVC aus der Originalquelle gab und aus mehreren anderen Gründen, gab es eine Vielzahl unterschiedlicher Interpretationen dieses Konzepts. Daher betrachten viele MVC als Designmuster. Seltener wird MVC als zusammengesetztes Muster oder als Kombination mehrerer Muster bezeichnet, die zusammenarbeiten, um komplexe Anwendungen zu erstellen. Aber wie bereits erwähnt, handelt es sich bei MVC in erster Linie um eine Reihe architektonischer Ideen/Prinzipien/Ansätze, die auf unterschiedliche Weise und mit unterschiedlichen Mustern umgesetzt werden können ... Als Nächstes betrachten wir die Hauptideen, die im MVC-Konzept verankert sind. und aus mehreren anderen Gründen erschien eine große Anzahl unterschiedlicher Interpretationen dieses Konzepts. Daher betrachten viele MVC als Designmuster. Seltener wird MVC als zusammengesetztes Muster oder als Kombination mehrerer Muster bezeichnet, die zusammenarbeiten, um komplexe Anwendungen zu erstellen. Aber wie bereits erwähnt, handelt es sich bei MVC in erster Linie um eine Reihe architektonischer Ideen/Prinzipien/Ansätze, die auf unterschiedliche Weise und mit unterschiedlichen Mustern umgesetzt werden können ... Als Nächstes betrachten wir die Hauptideen, die im MVC-Konzept verankert sind. und aus mehreren anderen Gründen erschien eine große Anzahl unterschiedlicher Interpretationen dieses Konzepts. Daher betrachten viele MVC als Designmuster. Seltener wird MVC als zusammengesetztes Muster oder als Kombination mehrerer Muster bezeichnet, die zusammenarbeiten, um komplexe Anwendungen zu erstellen. Aber wie bereits erwähnt, handelt es sich bei MVC in erster Linie um eine Reihe architektonischer Ideen/Prinzipien/Ansätze, die auf unterschiedliche Weise und mit unterschiedlichen Mustern umgesetzt werden können ... Als Nächstes betrachten wir die Hauptideen, die im MVC-Konzept verankert sind.MVC: Grundlegende Ideen und Prinzipien
- VC ist eine Reihe architektonischer Ideen und Prinzipien zum Aufbau komplexer Informationssysteme mit einer Benutzeroberfläche
- MVC ist eine Abkürzung und steht für: Model-View-Controller

Schritt 1: Trennen Sie die Geschäftslogik der Anwendung von der Benutzeroberfläche
Die Hauptidee von MVC besteht darin, dass jede Anwendung mit einer Benutzeroberfläche in zwei Module unterteilt werden kann: ein Modul, das für die Implementierung der Geschäftslogik verantwortlich ist, und die Benutzeroberfläche. Das erste Modul implementiert die Hauptfunktionalität der Anwendung. Dieses Modul ist der Kern des Systems, in dem das Domänenmodell der Anwendung implementiert wird. Im MVC-Paradigma ist dieses Modul der Buchstabe M, also das Modell. Das zweite Modul implementiert die gesamte Benutzeroberfläche, einschließlich der Logik zur Anzeige von Daten für den Benutzer und zur Abwicklung der Benutzerinteraktion mit der Anwendung. Das Hauptziel dieser Trennung besteht darin, sicherzustellen, dass der Kern des Systems (das „Modell“ in der MVC-Terminologie) unabhängig entwickelt und getestet werden kann. Nach dieser Trennung sieht die Architektur der Anwendung folgendermaßen aus:
Schritt 2 Nutzen Sie das Beobachtermuster, um das Modell noch unabhängiger zu machen und Benutzeroberflächen zu synchronisieren
Hier haben wir 2 Ziele:- Erreichen Sie eine noch größere Unabhängigkeit des Modells
- Benutzeroberflächen synchronisieren
Schritt 3 Trennen Sie die Schnittstelle in Ansicht und Controller
Wir unterteilen die Anwendung weiterhin in Module, jetzt jedoch auf einer niedrigeren Ebene in der Hierarchie. In diesem Schritt wird die Benutzeroberfläche (die wir in Schritt 1 in ein eigenes Modul unterteilt haben) in eine Ansicht und einen Controller aufgeteilt. Es ist schwierig, eine strikte Grenze zwischen der Ansicht und dem Controller zu ziehen. Wenn wir sagen, dass die Ansicht das ist, was der Benutzer sieht, und der Controller der Mechanismus ist, der es dem Benutzer ermöglicht, mit dem System zu interagieren, könnten Sie auf einen Widerspruch hinweisen. Bedienelemente, wie zum Beispiel Schaltflächen auf einer Webseite oder eine virtuelle Tastatur auf dem Bildschirm eines Telefons, sind grundsätzlich Teil des Controllers. Sie sind für den Benutzer jedoch genauso sichtbar wie jeder andere Teil der Ansicht. Worüber wir hier wirklich reden, ist funktionale Trennung. Die Hauptaufgabe der Benutzeroberfläche besteht darin, die Interaktion des Benutzers mit dem System zu erleichtern.- Systeminformationen ausgeben und dem Benutzer komfortabel anzeigen
- Benutzerdaten und Befehle eingeben (dem System mitteilen)

- Nach den Prinzipien des MVC-Paradigmas muss ein System in Module unterteilt werden.
- Das wichtigste und unabhängigste Modul sollte das Modell sein.
- Das Modell ist der Kern des Systems. Es sollte möglich sein, es unabhängig von der Benutzeroberfläche zu entwickeln und zu testen.
- Um dies zu erreichen, müssen wir im ersten Schritt der Teilung das System in ein Modell und eine Benutzeroberfläche aufteilen.
- Anschließend stärken wir mithilfe des Beobachtermusters die Unabhängigkeit des Modells und synchronisieren Benutzeroberflächen.
- Der dritte Schritt besteht darin, die Benutzeroberfläche in einen Controller und eine Ansicht zu unterteilen.
- Alles, was zum Empfangen von Benutzerdaten in das System erforderlich ist, befindet sich im Controller.
- Alles, was zur Bereitstellung von Informationen an den Benutzer erforderlich ist, befindet sich in der Ansicht.
Ein wenig darüber, wie die Ansicht und der Controller mit dem Modell interagieren
Durch die Eingabe von Informationen über den Controller ändert der Benutzer das Modell. Oder zumindest ändert der Benutzer die Modelldaten. Wenn der Benutzer Informationen über Schnittstellenelemente (über die Ansicht) erhält, erhält er Informationen über das Modell. Wie kommt es dazu? Auf welche Weise interagieren die Ansicht und der Controller mit dem Modell? Schließlich können die Klassen der Ansicht die Methoden der Modellklassen nicht direkt aufrufen, um Daten zu lesen/schreiben. Andernfalls könnten wir nicht sagen, dass das Modell unabhängig ist. Das Modell besteht aus einer Reihe eng verwandter Klassen, auf die weder die Ansicht noch der Controller Zugriff haben sollten. Um das Modell mit der Ansicht und dem Controller zu verbinden, müssen wir das Fassadenentwurfsmuster implementieren. Die Fassade des Modells ist die Schicht zwischen dem Modell und der Benutzeroberfläche. Dadurch erhält die Ansicht bequem formatierte Daten und der Controller ändert Daten, indem er die erforderlichen Methoden an der Fassade aufruft. Am Ende sieht alles so aus:
GO TO FULL VERSION