Mẫu thiết kế - Mẫu bộ điều khiển phía trước

Mẫu thiết kế bộ điều khiển phía trước được sử dụng để cung cấp cơ chế xử lý yêu cầu tập trung để tất cả các yêu cầu sẽ được xử lý bởi một trình xử lý duy nhất. Trình xử lý này có thể thực hiện xác thực / ủy quyền / ghi nhật ký hoặc theo dõi yêu cầu và sau đó chuyển các yêu cầu đến trình xử lý tương ứng. Sau đây là các thực thể của kiểu thiết kế này.

  • Front Controller - Trình xử lý duy nhất cho tất cả các loại yêu cầu đến ứng dụng (dựa trên web / dựa trên máy tính để bàn).

  • Dispatcher - Front Controller có thể sử dụng đối tượng điều phối có thể gửi yêu cầu đến trình xử lý cụ thể tương ứng.

  • View - Các khung nhìn là đối tượng mà các yêu cầu được thực hiện.

Thực hiện

Chúng ta sẽ tạo FrontControllerDispatcher để hoạt động như Front Controller và Dispatcher tương ứng. HomeViewStudentView đại diện cho các chế độ xem khác nhau mà các yêu cầu có thể đến với bộ điều khiển phía trước.

FrontControllerPatternDemo , lớp demo của chúng tôi, sẽ sử dụng FrontController để trình diễn Mẫu thiết kế bộ điều khiển phía trước.

Bước 1

Tạo Chế độ xem.

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

Bước 2

Tạo Điều phối viên.

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

Bước 3

Tạo 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);
      }	
   }
}

Bước 4

Sử dụng FrontController để thể hiện Mẫu thiết kế bộ điều khiển phía trước.

FrontControllerPatternDemo.java

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

Bước 5

Xác minh kết quả đầu ra.

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