Modèle de conception - Modèle de contrôleur avant

Le modèle de conception de contrôleur frontal est utilisé pour fournir un mécanisme de gestion des demandes centralisé afin que toutes les demandes soient traitées par un seul gestionnaire. Ce gestionnaire peut effectuer l'authentification / l'autorisation / la journalisation ou le suivi de la demande, puis transmettre les demandes aux gestionnaires correspondants. Voici les entités de ce type de modèle de conception.

  • Front Controller - Un seul gestionnaire pour toutes sortes de requêtes arrivant à l'application (basées sur le Web ou sur le bureau).

  • Dispatcher - Le contrôleur frontal peut utiliser un objet dispatcher qui peut envoyer la demande au gestionnaire spécifique correspondant.

  • View - Les vues sont l'objet pour lequel les demandes sont faites.

la mise en oeuvre

Nous allons créer un FrontController et un Dispatcher pour agir en tant que Front Controller et Dispatcher en conséquence. HomeView et StudentView représentent diverses vues pour lesquelles les demandes peuvent arriver au contrôleur frontal.

FrontControllerPatternDemo , notre classe de démonstration, utilisera FrontController pour démontrer le modèle de conception de contrôleur frontal.

Étape 1

Créez des vues.

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éez 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éer FrontController

FrontController.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){
      //log each request
      trackRequest(request);
      
      //authenticate the user
      if(isAuthenticUser()){
         dispatcher.dispatch(request);
      }	
   }
}

Étape 4

Utilisez FrontController pour démontrer le modèle de conception de 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