1. 程式人生 > >設計模式---前端控制器模式

設計模式---前端控制器模式

設計模式---前端控制器模式

  • 介紹

前端控制器模式(Front Controller Pattern)是用來提供一個集中的請求處理機制,所有的請求都將由一個單一的處理程式處理。該處理程式可以做認證/授權/記錄日誌,或者跟蹤請求,然後把請求傳給相應的處理程式。以下是這種設計模式的實體。

  • 前端控制器(Front Controller) - 處理應用程式所有型別請求的單個處理程式,應用程式可以是基於 web 的應用程式,也可以是基於桌面的應用程式。
  • 排程器(Dispatcher) - 前端控制器可能使用一個排程器物件來排程請求到相應的具體處理程式。
  • 檢視(View)
     - 檢視是為請求而建立的物件。

 

  • 實現

/**

 * 排程器

 *

 * @author OF

 * @date 2018年10月18日

 */

public class DispatcherServlet {

private HashMap<String, Servlet> mapping = new HashMap<String, Servlet>();

public DispatcherServlet(){

mapping.put("user",new UserServlet());

mapping.put("index",new IndexServlet());

}

public void dispatch(String url) {

// 根據URL獲取控制例項

Servlet servlet = mapping.get(url);

servlet.service();

}

}











/**

 * 前端控制器(入口)

 *

 * @author OF

 * @date 2018年10月18日

 */

public class FrontController {

private DispatcherServlet dispatcherServlet;



public FrontController() {

dispatcherServlet = new DispatcherServlet();

}



private void init() {

System.out.println("init");

}



private void check() {



System.out.println("check param");

}



public void doService(String url) {

init();

check();

dispatcherServlet.dispatch(url);



}

}





public class TestMain {

public static void main(String[] args) {

FrontController frontController = new FrontController();

frontController.doService("index");

}



}





public interface Servlet {

void init();



void service();



void destroy();

}



public abstract class HttpServlet implements Servlet {



@Override

public void init() {



}



@Override

public void service() {



}



@Override

public void destroy() {



}



}





public class UserServlet extends HttpServlet {



@Override

public void service() {

System.out.println("user servlet 完成");

}



}





public class IndexServlet extends HttpServlet {



@Override

public void service() {

System.out.println("index servlet 完成");

}



}

 

  •  總結(使用場景)
  1. Servlet  
  2. Spring mvc
  3. 介面入口