Tasarım Deseni - Ön Denetleyici Modeli

Ön kontrolör tasarım modeli, tüm taleplerin tek bir işleyici tarafından ele alınabilmesi için merkezi bir talep işleme mekanizması sağlamak için kullanılır. Bu işleyici, talebin kimlik doğrulaması / yetkilendirmesi / günlüğe kaydedilmesi veya takibini yapabilir ve ardından talepleri ilgili işleyicilere iletebilir. Bu tür tasarım modelinin varlıkları aşağıdadır.

  • Front Controller - Uygulamaya gelen her türlü istek için tek işleyici (web tabanlı / masaüstü tabanlı).

  • Dispatcher - Ön Denetleyici, isteği karşılık gelen belirli işleyiciye gönderebilen bir dağıtıcı nesnesi kullanabilir.

  • View - Görünümler, isteklerin yapıldığı nesnelerdir.

Uygulama

Buna uygun olarak Front Controller ve Dispatcher olarak görev yapacak bir FrontController ve Dispatcher oluşturacağız . HomeView ve StudentView istekleri ön denetleyiciye gelebilir kendisi için çeşitli görüşlerini temsil etmemektedir.

Demo sınıfımız olan FrontControllerPatternDemo , FrontController'ı Ön Denetleyici Tasarım Modelini göstermek için kullanacaktır .

Aşama 1

Görünümler oluşturun.

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

Adım 2

Dağıtıcı oluşturun.

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

Aşama 3

FrontController oluştur

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. adım

Ön Denetleyici Tasarım Modelini göstermek için FrontController'ı kullanın .

FrontControllerPatternDemo.java

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

Adım 5

Çıkışı doğrulayın.

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