Mode contrôleur avant
Front Controller Pattern est utilisé pour fournir un mécanisme de traitement des demandes centralisé, et toutes les demandes seront traitées par un seul gestionnaire. Le gestionnaire peut effectuer une authentification/autorisation/journalisation, ou suivre la demande, puis transmettre la demande au gestionnaire approprié. Voici les entités de ce modèle de conception.
Front Controller - Un gestionnaire unique qui gère tous les types de demandes pour une application, qui peut être une application Web ou une application de bureau.
Dispatcher - Le contrôleur frontal peut utiliser un objet dispatcher pour envoyer des requêtes au gestionnaire spécifique correspondant.
Vue - Une vue est un objet créé pour une requête.
Mise en œuvre
Nous allons créer FrontController et Dispatcher en tant que contrôleur frontal et répartiteur respectivement. HomeView et StudentView représentent différentes vues créées pour les requêtes reçues par le contrôleur frontal.
FrontControllerPatternDemo, notre classe de démonstration utilise FrontController pour démontrer le modèle de conception du contrôleur frontal.
Étape 1
Créez une vue.
HomeView.java
public class HomeView { public void show(){ System.out.println("Displaying Home Page"); } }
StudentView.java
public class StudentView { public void show(){ System.out.println("Displaying Student Page"); } }
Étape 2
Créer le répartiteur Dispatcher .
Dispatcher.java
public class Dispatcher { private StudentView studentView; private HomeView homeView; public Dispatcher(){ studentView = new StudentView(); homeView = new HomeView(); } public void dispatch(String request){ if(request.equalsIgnoreCase("STUDENT")){ studentView.show(); }else{ homeView.show(); } } }
Étape 3
Créez le contrôleur frontal FrontController.
Context.java
public class FrontController { private Dispatcher dispatcher; public FrontController(){ dispatcher = new Dispatcher(); } private boolean isAuthenticUser(){ System.out.println("User is authenticated successfully."); return true; } private void trackRequest(String request){ System.out.println("Page requested: " + request); } public void dispatchRequest(String request){ //记录每一个请求 trackRequest(request); //对用户进行身份验证 if(isAuthenticUser()){ dispatcher.dispatch(request); } } }
Étape 4
Utilisez FrontController pour démontrer le modèle de conception du contrôleur frontal.
FrontControllerPatternDemo.java
public class FrontControllerPatternDemo { public static void main(String[] args) { FrontController frontController = new FrontController(); frontController.dispatchRequest("HOME"); frontController.dispatchRequest("STUDENT"); } }
Étape 5
Vérifiez la sortie.
Page requested: HOME User is authenticated successfully. Displaying Home Page Page requested: STUDENT User is authenticated successfully. Displaying Student Page