Design Pattern - Pattern del controller anteriore

Il modello di progettazione del front controller viene utilizzato per fornire un meccanismo di gestione delle richieste centralizzato in modo che tutte le richieste vengano gestite da un unico gestore. Questo gestore può eseguire l'autenticazione / autorizzazione / registrazione o il monitoraggio della richiesta e quindi passare le richieste ai gestori corrispondenti. Di seguito sono riportate le entità di questo tipo di design pattern.

  • Front Controller - Un unico gestore per tutti i tipi di richieste in arrivo all'applicazione (sia web che desktop).

  • Dispatcher - Front Controller può utilizzare un oggetto dispatcher che può inviare la richiesta al corrispondente gestore specifico.

  • View - Le viste sono l'oggetto per il quale vengono effettuate le richieste.

Implementazione

Creeremo un FrontController e un Dispatcher che fungano da Front Controller e Dispatcher corrispondentemente. HomeView e StudentView rappresentano varie viste per le quali le richieste possono arrivare al front controller.

FrontControllerPatternDemo , la nostra classe demo, utilizzerà FrontController per dimostrare il modello di progettazione del front controller.

Passo 1

Crea viste.

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");
   }
}

Passo 2

Crea 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();
      }	
   }
}

Passaggio 3

Crea 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);
      }	
   }
}

Passaggio 4

Utilizzare FrontController per dimostrare il modello di progettazione del controller anteriore.

FrontControllerPatternDemo.java

public class FrontControllerPatternDemo {
   public static void main(String[] args) {
   
      FrontController frontController = new FrontController();
      frontController.dispatchRequest("HOME");
      frontController.dispatchRequest("STUDENT");
   }
}

Passaggio 5

Verifica l'output.

Page requested: HOME
User is authenticated successfully.
Displaying Home Page
Page requested: STUDENT
User is authenticated successfully.
Displaying Student Page