Wzorzec projektowy - wzór kontrolera przedniego

Wzorzec projektowy kontrolera frontowego jest używany do zapewnienia scentralizowanego mechanizmu obsługi żądań, dzięki czemu wszystkie żądania będą obsługiwane przez jedną procedurę obsługi. Ten program obsługi może przeprowadzić uwierzytelnianie / autoryzację / logowanie lub śledzenie żądania, a następnie przekazać żądania do odpowiednich programów obsługi. Poniżej znajdują się elementy tego typu wzorca projektowego.

  • Front Controller - Pojedynczy program obsługi dla wszystkich rodzajów żądań przychodzących do aplikacji (zarówno sieciowej, jak i stacjonarnej).

  • Dispatcher - Kontroler frontowy może użyć obiektu dyspozytora, który może wysłać żądanie do odpowiedniej konkretnej obsługi.

  • View - Widoki to obiekt, którego dotyczą żądania.

Realizacja

Zamierzamy stworzyć FrontController i Dispatcher, który będzie działał odpowiednio jako Front Controller i Dispatcher. HomeView i StudentView reprezentują różne widoki, dla których żądania mogą trafiać do kontrolera frontowego.

FrontControllerPatternDemo , nasza klasa demonstracyjna, użyje FrontController do zademonstrowania wzorca projektowego Front Controller.

Krok 1

Utwórz widoki.

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

Krok 2

Utwórz dyspozytora.

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

Krok 3

Utwórz 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);
      }	
   }
}

Krok 4

Użyj FrontController, aby zademonstrować wzorzec projektowy kontrolera przedniego.

FrontControllerPatternDemo.java

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

Krok 5

Sprawdź dane wyjściowe.

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