Front-Controller-Muster
Das Front-Controller-Muster wird verwendet, um einen zentralisierten Mechanismus zur Verarbeitung von Anfragen bereitzustellen, bei dem alle Anfragen von einem einzigen Handler verarbeitet werden. Der Handler kann Authentifizierung/Autorisierung/Protokollierung durchführen oder Anfragen verfolgen und dann die Anfrage an den entsprechenden Handler weiterleiten. Im Folgenden sind die Entitäten dieses Entwurfsmusters aufgeführt.
- Front-Controller- Ein einzelner Handler, der alle Arten von Anfragen für eine Anwendung verarbeitet, die eine webbasierte Anwendung oder eine desktopbasierte Anwendung sein kann.
- Dispatcher- Der Front-Controller kann ein Dispatcher-Objekt verwenden, um Anfragen an die entsprechenden konkreten Handler weiterzuleiten.
- View- Views sind Objekte, die für Anfragen erstellt werden.
summary
Absicht
Verwendet einen zentralen Controller (oder Handler), um Client-Anfragen an die entsprechenden Handler weiterzuleiten.
Hauptprobleme gelöst
- Löst das Problem der verstreuten Anfragenverarbeitung in Webanwendungen, indem ein einheitlicher Einstiegspunkt für die Anfragenverarbeitung bereitgestellt wird.
Anwendungsfall
- Wenn Anfragen in einer Webanwendung zentral verwaltet und weitergeleitet werden müssen.
Implementierungsansatz
- Front Controller: Fungiert als einzelner Einstiegspunkt für Anfragen und ist für den Empfang und die Weiterleitung von Anfragen verantwortlich.
- view: Wird verwendet, um die Verarbeitungsergebnisse zu rendern.
- Handler: Die Komponente, die die Anfragenverarbeitung tatsächlich ausführt.
Schlüsselcode
- Front Controller: Enthält die Logik zur Entscheidung, an welchen Handler die Anfrage weitergeleitet wird.
- Handler Mapping: Ordnet Anfragen den entsprechenden Handlern zu.
Anwendungsbeispiel
- Web-FrameworkEin Beispiel ist das DispatcherServlet in Spring MVC, das als Front Controller fungiert.
Vorteile
- Zentralisierte Anfragenverarbeitung: Vereinfacht den Ablauf der Anfragenverarbeitung und erleichtert Verwaltung und Wartung.
- Reduziert Code-Duplikation: Reduziert doppelten Code in Views und Handlern durch Wiederverwendung von Controllern.
- Einfach zu erweitern: Beim Hinzufügen neuer Anfragenverarbeitungslogik muss nur ein neuer Handler hinzugefügt werden.
Nachteile
- Kann zu einem Leistungsengpass werden.: Alle Anfragen laufen durch den Front Controller, was die Leistung beeinträchtigen kann.
Verwendungshinweise
- Wenn Sie eine Webanwendung erstellen, die einen klaren Anfragenverarbeitungsablauf erfordert, sollten Sie das Front-Controller-Muster in Betracht ziehen.
Hinweise
- Stellen Sie sicher, dass der Front Controller nicht aufgrund der zentralisierten Verarbeitung aller Anfragen zu einem Leistungsengpass wird.
Enthält mehrere Hauptrollen.
Front Controller:
- : Fungiert als einziger Einstiegspunkt für Anfragen, ist für den Empfang von Anfragen verantwortlich und entscheidet, wie sie behandelt werden.
Handler:
- Die Komponente, die die Anfragenverarbeitung tatsächlich ausführt.
View:
- Wird verwendet, um die vom Handler erzeugte Antwort zu rendern.
Handler-Zuordnung (optional):
- Ordnet Anfragen den entsprechenden Handlern zu.
Client (optional):
- : Der Webbrowser oder API-Client, der Anfragen sendet.
Das Front-Controller-Muster hilft dabei, Webanwendungen zu erstellen, die leicht zu warten und zu erweitern sind, indem es einen zentralisierten Mechanismus zur Anfrageverarbeitung bereitstellt.
Implementierung
Wir werdenFrontController、Dispatcher erstellen,die als Front Controller bzw. Dispatcher behandelt werden.HomeViewundStudentViewStellt verschiedene Ansichten dar, die für vom Front Controller empfangene Anfragen erstellt wurden.
FrontControllerPatternDemo, unsere Demonstrationsklasse verwendetFrontController, um das Front-Controller-Entwurfsmuster zu demonstrieren.
Schritt 1
Ansicht erstellen.
HomeView.java
StudentView.java
Schritt 2
Erstellen Sie einen Dispatcher.
Dispatcher.java
Schritt 3
Erstellen Sie einen FrontController.
FrontController.java
Schritt 4
VerwendungFrontControllerum das Front-Controller-Entwurfsmuster zu demonstrieren.
FrontControllerPatternDemo.java
Schritt 5
Führen Sie das Programm aus, Ausgabeergebnisse:
Page requested: HOME User is authenticated successfully. Displaying Home Page Page requested: STUDENT User is authenticated successfully. Displaying Student PageWeitere Erweiterungen