Patrón de diseño: patrón de controlador frontal

El patrón de diseño del controlador frontal se utiliza para proporcionar un mecanismo de manejo de solicitudes centralizado de modo que todas las solicitudes sean manejadas por un solo controlador. Este controlador puede realizar la autenticación / autorización / registro o seguimiento de la solicitud y luego pasar las solicitudes a los controladores correspondientes. A continuación se muestran las entidades de este tipo de patrón de diseño.

  • Front Controller - Un solo controlador para todo tipo de solicitudes que llegan a la aplicación (ya sea en la web o en el escritorio).

  • Dispatcher - El controlador frontal puede usar un objeto despachador que puede enviar la solicitud al manejador específico correspondiente.

  • View - Las vistas son el objeto para el que se realizan las solicitudes.

Implementación

Vamos a crear un FrontController y Dispatcher para actuar como Front Controller y Dispatcher correspondientemente. Homeview y StudentView representan diversas vistas para los que las peticiones pueden venir a controlador frontal.

FrontControllerPatternDemo , nuestra clase de demostración, utilizará FrontController para demostrar el patrón de diseño del controlador frontal.

Paso 1

Crear vistas.

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

Paso 2

Crear despachador.

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

Paso 3

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

Paso 4

Utilice FrontController para demostrar el patrón de diseño del controlador frontal.

FrontControllerPatternDemo.java

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

Paso 5

Verifique la salida.

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