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