前端控制器模式(Front Controller Pattern)是用来提供一个集中的请求处理机制,所有的请求都将由一个单一的处理程序处理。该处理程序可以做认证/授权/记录日志,或者跟踪请求,然后把请求传给相应的处理程序。以下是这种设计模式的实体。

  • 前端控制器(Front Controller) - 处理应用程序所有类型请求的单个处理程序,应用程序可以是基于 web 的应用程序,也可以是基于桌面的应用程序。
  • 调度器(Dispatcher) - 前端控制器可能使用一个调度器对象来调度请求到相应的具体处理程序。
  • 视图(View) - 视图是为请求而创建的对象。

实现

我们将创建 FrontControllerDispatcher 分别当作前端控制器和调度器。HomeView 和 StudentView 表示各种为前端控制器接收到的请求而创建的视图。

FrontControllerPatternDemo,我们的演示类使用 FrontController 来演示前端控制器设计模式。

步骤 1

创建视图。

public class HomeView {public void show(){System.out.println("Displaying Home Page");}
}

public class StudentView {public void show(){System.out.println("Displaying Student Page");}
}

步骤 2

创建调度器 Dispatcher。

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。

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

步骤 4

使用 FrontController 来演示前端控制器设计模式。

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

【设计模式】前端控制器模式相关推荐

  1. php 前端控制器,前端控制器模式

    前端控制器模式(Front Controller Pattern)是用来提供一个集中的请求处理机制,所有的请求都将由一个单一的处理程序处理.该处理程序可以做认证/授权/记录日志,或者跟踪请求,然后把请 ...

  2. Java前端控制器模式

    前端控制器模式(Front Controller Pattern)是用来提供一个集中的请求处理机制,所有的请求都将由一个单一的处理程序处理.该处理程序可以做认证/授权/记录日志,或者跟踪请求,然后把请 ...

  3. 【MVC模式】Front前端控制器模式、Jsp Model1 和 Jsp Model2、MVC思想

    Front前端控制器模式 Front前端控制器模式,是一种JavaEE模式:用一个servlet控制主入口,然后根据不同的情况,将请求分发给相应的处理程序. Jsp Model1 和 Jsp Mode ...

  4. python设计模式之模型-视图-控制器模式

    python设计模式之模型-视图-控制器模式 关注点分离( Separation of Concerns, SoC)原则是软件工程相关的设计原则之一. SoC原则背后的思想是将一个应用切分成不同的部分 ...

  5. SpringMVC——MVC思想、前端控制器、SpringMVC概述、编写第一个SpringMVC程序

    目录 一.什么是MVC 二.前端控制器(中心控制器) 1.什么是前端控制器 2.前端控制器原理 三.什么是SpringMVC 1.SpringMVC简介 2.SpringMVC和Struts2 四.S ...

  6. index.php.前端控制器,前端控制器 - Symfony开源 - Symfony中国

    目前为止,我们的程序还过于简单,因为它只有一个页面.为了加点调料进去,我们疯狂一下,再做一个说"goodbye"的页面: 1 2 3 4 5 6 7 8 9 10// framew ...

  7. 每天一个设计模式之组合模式

    作者按:<每天一个设计模式>旨在初步领会设计模式的精髓,目前采用javascript和python两种语言实现.诚然,每种设计模式都有多种实现方式,但此小册只记录最直截了当的实现方式 :) ...

  8. python的设计模式之MVC模式

    模型-视图-控制器模式 关注点分离(Separation of Concerns,SoC)原则是软件工程相关的设计原则之一.SoC原则背后的思想是将一个应用切分成不同的部分,每个部分解决一个单独的关注 ...

  9. springMVC(一) --前端控制器(DispatcherServlet)的作用

        SpringMVC是Spring中的模块,它实现了mvc设计模式的web框架,首先用户发出请求,请求到达SpringMVC的前端控制器(DispatcherServlet),前端控制器根据用户 ...

最新文章

  1. SpringBoot(十五)_springboot实现预览pdf
  2. Symbian的内存管理机制
  3. IM群聊消息如此复杂,如何保证不丢不重?
  4. 互联网1分钟 |1026
  5. 当AR落地B端行业应用,它的无限可能在哪?
  6. php递归复制文件内容,PHP递归复制整个文件夹
  7. 95-140-128-源码-transform-算子maxMin
  8. 十分钟了解HTTPS协议
  9. 一种新的子波域滤波算法
  10. 学习笔记-Map集合的遍历
  11. 【C#网络编程系列】专题十:实现简单的邮件收发器
  12. 用计算机绘制函数图像ppt,ppt怎么制作函数图
  13. 内存数据库fastdb的使用研究报告
  14. 测试自动化成本及投资回报率
  15. 【毕业设计】基于单片机的火灾报警系统 -stm32 单片机物联网
  16. 磁盘被写保护怎样去掉
  17. Learning AV Foundation(二)AVAudioPlayer
  18. python plt绘制多子图
  19. ttl一会255一会64_TTL=128和TTL=64的不同是什么?
  20. PDF 转图片时丢字的一种可能解决方案

热门文章

  1. 建站篇-用户认证系统-开始
  2. Android中的dispatchTouchEvent()、onInterceptTouchEvent()和onTouchEvent()
  3. Jquery 将后台返回的字符串转换成Json格式的数据
  4. pgp加密软件的简单使用
  5. STC用PCA测量脉宽_用于相干激光雷达的大能量长脉宽单频激光器 | COL
  6. FD.io/VPP — VPP Agent — 架构设计
  7. Cannot create file Altium\AD15\Library\BSDL\Generic\BSDL_FileMap.txt.拒绝访问
  8. Visual Studio Code的output窗口乱码与打开Cura没反应
  9. Altium Designer Bottom Solder层的作用
  10. TCP/IP协议概述