آموزش الگوهای طراحی

Design Pattern - الگوی Front Controller

الگوی front controller برای ارائه ی یک مکانیسم انجام درخواست مرکزی استفاده می شه، بنابراین تمام درخواست ها توسط یک برنامه ی کنترلیِ واحد، انجام میشن. این برنامه ی کنترلی می تواند اهراز هویت/صدور مجوز/ ورود یا پیگیریِ درخواست را انجام بده و بعد درخواست ها را به کنترل کننده های مربوطه پاس بده. در ادامه موجودیت های از نوع این نوع از الگوی طراحی را مشاهده می کنین.

  • Front Controller – کنترل کننده ای واحد برای تمام انواع درخواست هایی که به برنامه ی کاربردی میان (تحت وب/ تحت ویندوز)
  • Dispatcher (اعزام کننده) – ممکنه Front Controller از شیءِ Dispatcher که می تواند درخواست را به کنترل کننده ی مربوطه اش بفرست هم استفاده کنه.
  • View (نمایش) – Viewها شیء ای هستن که برای درخواست ها ساخته میشن.

پیاده سازی

در این بخش یک FrontController و Dispatcher برای این که مثل Front Controller و Dispatcher متناظر عمل کنن ایجاد می کنیم. HomeView و StudentView، viewهای مختلفی را برای هر درخواستی که می تواند به front controller بیاد، ارائه میده.

front controller pattern uml diagram

مرحله ی 1

ایجاد Viewها.

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

ایجاد Dispatcher.

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

ایجاد 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 برای نشان دادن الگوی طراحیِ Front Controller.

FrontControllerPatternDemo.java

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

مرحله ی 5

بررسی خروجی

Page requested: HOME
User is authenticated successfully.
Displaying Home Page
Page requested: STUDENT
User is authenticated successfully.
Displaying Student Page
در صورتی که سوال و یا نظری دارید، از بخش نظرات با ما در میان بگذارید.

خبـرنــامه

Newsletters

در خبــرنـامه سافت اسکیل عضو شویــد تا جدیدترین هـای سایت را بلافاصله در ایمیل خـود دریافت کنیـد

شما چه نظر و یا سوالی درباره این نوشته دارید؟

مبحث آموزشی

آموزش الگوهای طراحی

Learn Design Patterns

سرفصل ها

پرســیدن سؤال جدید

سؤال های تخصصی خود را از ما بپرسید

دنبال کردن تلگرام کانال سافت اسکیل

https://telegram.me/softskill_ir

عملیات کاربران

خبـرنــامه

Newsletters

در خبــرنـامه سافت اسکیل عضو شویــد تا جدیدترین هـای سایت را بلافاصله در ایمیل خـود دریافت کنیـد

کلیک کنید و سوالات خود را از ما بپرسید
لطفا فرم سوال را پر کنید

سوال شما با موفقیت ثبت شد. برای اینکه بتوانیم به شما اطلاع رسانی کنیم، موارد زیر را وارد کنید:

لطفا چند لحظه منتظر بمانید ...