【设计模式】前端控制器模式

这篇具有很好参考价值的文章主要介绍了【设计模式】前端控制器模式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

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

实现

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

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

【设计模式】前端控制器模式,设计模式,设计模式,前端

步骤 1

创建视图。

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){
      //记录每一个请求
      trackRequest(request);
      //对用户进行身份验证
      if(isAuthenticUser()){
         dispatcher.dispatch(request);
      }  
   }
}

步骤 4

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

FrontControllerPatternDemo.java

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

步骤 5

执行程序,输出结果:文章来源地址https://www.toymoban.com/news/detail-649671.html

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

到了这里,关于【设计模式】前端控制器模式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 12.5在Linux中编写队列模式的SPI控制器驱动

    在Linux内核中更加推荐使用队列模式的SPI控制器驱动,而且队列模式的SPI控制器驱动也更加简单,只需要在驱动中实现单个spi_transfer的传输即可,将spi_message拆解为spi_transfer、片选GPIO控制、统计信息更新等均由SPI核心去完成。 实现设置SPI总线的函数setup,用于设置SPI总线,若

    2024年01月20日
    浏览(53)
  • 一级倒立摆控制 —— MPC 控制器设计及 MATLAB 实现

    最优控制介绍 一级倒立摆控制 —— 系统建模(传递函数模型与状态空间方程表示) 一级倒立摆控制 —— PID 控制器设计及 MATLAB 实现 一级倒立摆控制 —— 最优控制 线性二次型控制(LQR)及 MATLAB 实现 一级倒立摆控制 —— MPC 控制器设计及 MATLAB 实现 一级倒立摆控制 ——

    2024年02月03日
    浏览(46)
  • 一级倒立摆控制 —— PID 控制器设计及 MATLAB 实现

    最优控制介绍 一级倒立摆控制 —— 系统建模(传递函数模型与状态空间方程表示) 一级倒立摆控制 —— 最优控制 线性二次型控制(LQR)及 MATLAB 实现 一级倒立摆控制 —— MPC 控制器设计及 MATLAB 实现 一级倒立摆控制 —— ROS2 仿真 一级倒立摆控制 —— LQR 控制器 GAZEBO 仿

    2024年02月03日
    浏览(55)
  • 一级倒立摆控制 —— LQR 控制器设计及 MATLAB 实现

    最优控制介绍 一级倒立摆控制 —— 系统建模(传递函数模型与状态空间方程表示) 一级倒立摆控制 —— PID 控制器设计及 MATLAB 实现 一级倒立摆控制 —— MPC 控制器设计及 MATLAB 实现 1.1 系统变量表: 参数 符号 数值 小车质量 M M M 0.5 kg 摆杆质量 m m m 0.2 kg 小车摩擦系数 b

    2024年02月04日
    浏览(77)
  • 项目三 电梯控制器设计(FPGA综合应用设计)

    (一个很简陋的电梯控制器设计,但是应该可以过关了吧?😶‍🌫️) 通过实验,巩固有限状态机设计方法,并设计实现一个电梯控制器。 利用 BASYS 开发板资源设计一个 5 层楼的电梯控制器系统,并能在开发板上 模拟电梯运行状态,具体要求如下: 利用开发板的 5 个按键作

    2024年02月03日
    浏览(47)
  • MATLAB 模型预测控制(MPC)控制入门 —— 设计并仿真 MPC 控制器

    MATLAB 模型预测控制(MPC) 模型预测控制工具箱™ 提供了用于开发模型预测控制 (MPC) 的函数、应用程序、Simulink® 模块和参考示例。对于线性问题,该工具箱支持设计隐式、显式、自适应和增益调度 MPC。对于非线性问题,您可以实现单级和多级非线性 MPC。该工具箱提供可部

    2024年02月02日
    浏览(52)
  • 基于FPGA的PID控制器设计

    PID控制应该算是应用非常广泛的控制算法了。常见的比如控制环境温度,控制无人机飞行高度速度等。PID我们将其分成三个参数,如下: P-比例控制,基本作用就是控制对象以线性的方式增加,在一个常量比例下,动态输出,缺点是会产生一个稳态误差。 I-积分控制,基本作

    2024年02月03日
    浏览(58)
  • 基于simulink的PID控制器设计

    目录 1、PID算法的基本理论 1.1 PID 控制的基本概念 1.2 基本公式 1.3 PID控制系统原理图 2、在simulink中搭建PID控制器模型及调参  3、调参 PID 控制器是一种比例、积分、微分并联控制器。它是最广泛应用的一种控制器。在 PID 控制器中,它的数学模型由比例、积分、微分三部分

    2024年02月03日
    浏览(58)
  • k8s控制器之job--第六弹Job的模式

    Kubernetes Job 对象可以用来支持 Pod 的并发执行,但是: Job 对象并非设计为支持需要紧密相互通信的Pod的并发执行,例如科学计算 Job 对象支持并发处理一系列相互独立但是又相互关联的工作任务,例如: 发送邮件 渲染页面 转码文件 扫描 NoSQL 数据库中的主键 其他 在一个复杂

    2024年02月10日
    浏览(45)
  • 【Matlab】简单PID 控制器设计(控制系统工具箱)

    这里展示如何设计一个简单的PID控制器。 传递函数如下: s y s = 1 ( s + 1 ) 3 sys=frac{1}{(s+1)^3} sys = ( s + 1 ) 3 1 ​ 首先,创建模型并选用PI控制器: 生成结果如下: (交叉频率约为0.52 rad/s,相位裕度为60) 检查受控系统的闭环阶跃响应: 为了缩短响应时间,可以设置比自动选择

    2024年02月06日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包