Mod pengawal hadapan


Corak Pengawal Depan digunakan untuk menyediakan mekanisme pemprosesan permintaan berpusat, dan semua permintaan akan diproses oleh pengendali tunggal. Pengendali boleh melakukan pengesahan/kebenaran/pengelogan, atau menjejaki permintaan, dan kemudian menghantar permintaan kepada pengendali yang sesuai. Berikut ialah entiti bagi corak reka bentuk ini.

  • Pengawal Depan - Pengendali tunggal yang mengendalikan semua jenis permintaan untuk aplikasi, yang boleh menjadi aplikasi berasaskan web atau aplikasi berasaskan Desktop.

  • Penghantar - Pengawal bahagian hadapan boleh menggunakan objek penghantar untuk menghantar permintaan kepada pengendali khusus yang sepadan.

  • Paparan - Pandangan ialah objek yang dicipta untuk permintaan.

Pelaksanaan

Kami akan mencipta FrontController dan Dispatcher masing-masing sebagai pengawal bahagian hadapan dan penghantar. HomeView dan StudentView mewakili pelbagai pandangan yang dibuat untuk permintaan yang diterima oleh pengawal hadapan.

FrontControllerPatternDemo, kelas demo kami menggunakan FrontController untuk menunjukkan corak reka bentuk pengawal hadapan.

frontcontroller_pattern_uml_diagram.jpg

Langkah 1

Buat paparan.

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

Langkah 2

Buat penghantar .

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

Langkah 3

Buat pengawal bahagian hadapan FrontController.

Context.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){
      //记录每一个请求
      trackRequest(request);
      //对用户进行身份验证
      if(isAuthenticUser()){
         dispatcher.dispatch(request);
      }	
   }
}

Langkah 4

Gunakan FrontController untuk menunjukkan corak reka bentuk pengawal hadapan.

FrontControllerPatternDemo.java

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

Langkah 5

Sahkan output.

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