鍍金池/ 教程/ Java/ Java前端控制器模式
Java前端控制器模式
Java工廠設(shè)計(jì)模式
Java抽象工廠模式
Java觀察者模式
Java門面模式(或外觀模式)
Java備忘錄模式
Java MVC模式
Java單例模式
Java傳輸對(duì)象模式
Java迭代器模式
Java責(zé)任鏈模式
Java命令模式
Java原型模式
Java解釋器模式
Java適配器模式
Java狀態(tài)模式
Java中介者模式(Mediator Pattern)
Java攔截過濾器模式
Java策略模式
Java組合模式
Java業(yè)務(wù)代理模式
Java裝飾模式
Java模板模式
Java橋接模式
Java過濾器模式(條件模式)
Java享元模式(Flyweight Pattern)
Java建造者(Builder)模式
Java設(shè)計(jì)模式
Java空對(duì)象模式
Java數(shù)據(jù)訪問對(duì)象模式
Java訪問者模式
Java組合實(shí)體模式
Java服務(wù)定位器模式

Java前端控制器模式

前端控制器設(shè)計(jì)模式用于提供集中式請(qǐng)求處理機(jī)制,以便所有請(qǐng)求將由單個(gè)處理程序處理。此處理程序可以執(zhí)行請(qǐng)求的身份驗(yàn)證/授權(quán)/記錄或跟蹤,然后將請(qǐng)求傳遞到相應(yīng)的處理程序。 以下是這種類型的設(shè)計(jì)模式的實(shí)體。

  • 前端控制器 - 用于處理應(yīng)用程序(基于Web或基于桌面)的各種請(qǐng)求的單個(gè)處理程序。
  • 分發(fā)器 - 前端控制器可以使用可以將請(qǐng)求分派到相應(yīng)的特定處理器的分派器對(duì)象。
  • 視圖 - 視圖是進(jìn)行請(qǐng)求的對(duì)象。

實(shí)現(xiàn)實(shí)例

在這個(gè)實(shí)現(xiàn)實(shí)例中,將創(chuàng)建一個(gè)FrontControllerDispatcher作為前臺(tái)控制器和相應(yīng)的調(diào)度程序。 HomeViewStudentView代表各種視圖,請(qǐng)求可以到前端的控制器中。

FrontControllerPatternDemo這是一個(gè)演示類,將使用FrontController來演示前控制器設(shè)計(jì)模式。

前端控制器設(shè)計(jì)模式示例的結(jié)構(gòu)如下圖所示 -

第1步

創(chuàng)建兩個(gè)視圖,其代碼如下 -
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");
   }
}

第2步

創(chuàng)建分派調(diào)度程序,其代碼如下 -
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();
      }    
   }
}

第3步

創(chuàng)建前端控制器 - 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);
      }    
   }
}

第4步

使用FrontController來演示前端控制器設(shè)計(jì)模式。

FrontControllerPatternDemo.java

public class FrontControllerPatternDemo {
   public static void main(String[] args) {

      FrontController frontController = new FrontController();
      frontController.dispatchRequest("HOME");
      frontController.dispatchRequest("STUDENT");
   }
}

第5步

驗(yàn)證輸出,執(zhí)行上面的代碼得到以下結(jié)果 -

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