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

前端控制器模式(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
时间: 2024-09-29 17:29:58

【设计模式】前端控制器模式的相关文章

PHP面向对象之前端控制器模式

/* 前端控制器的主要组成部分及功能如下: 1.入口文件类controller;(对这个系统的调用都是从这个文件开始的,也相当于一个控制中心,对所有相关的类进行调用) 2.应用程序配置信息类applicationhelper;(用于获取应用程序所需的配置信息) 3.命令类解释器commandresolver;(根据用户请求调用相应的命令类) 4.命令类command;(调用用户请求信息类和业务逻辑,还可以调用视图文件) 整个系统的调用步骤大概就是: 1.获取程序所需的配置信息 2.获取命令类 3

Java前端控制器模式~

前端控制器设计模式用于提供集中式请求处理机制,以便所有请求将由单个处理程序处理.此处理程序可以执行请求的身份验证/授权/记录或跟踪,然后将请求传递到相应的处理程序. 以下是这种类型的设计模式的实体. 前端控制器 - 用于处理应用程序(基于Web或基于桌面)的各种请求的单个处理程序. 分发器 - 前端控制器可以使用可以将请求分派到相应的特定处理器的分派器对象. 视图 - 视图是进行请求的对象. 实现实例 在这个实现实例中,将创建一个FrontController和Dispatcher作为前台控制器

前端控制器

原文地址: http://www.cnblogs.com/firstdream/archive/2012/02/09/2344160.html 前端控制器一 4年以前,当我还在一种叫ASP的东西上工作的时候,我整天为两个问题头疼不已:一是如何将分散的页面控制整合起来.解释型的服务器端脚本,每个页面都有 接收和处理请求的能力.这样以每个页面作为独立的单元来处理请求让人感觉粒度太小,分散又不爽.二是如何减少重复代码.脚本语言里处理重复代码的灵丹妙药 是include.每个页面里都可以include

前端控制器DispatcherServlet 详解

DispatcherServlet 是前端控制器设计模式的实现,提供 Spring Web MVC 的集中访问点,而且负责职责的分派,而且与 Spring IoC 容器无缝集成,从而可以获得 Spring 的所有好处 DispatcherServlet 主要用作职责调度工作,本身主要用于控制流程,主要职责如下: 1.文件上传解析,如果请求类型是 multipart 将通过 MultipartResolver 进行文件上传解析: 2.通过 HandlerMapping,将请求映射到处理器(返回一个

24种设计模式--中介者模式【Mediator Pattern】

各位好,大家都是来自五湖四海,都要生存,于是都找了个靠山——公司,给你发薪水的地方,那公司就要想尽办法盈利赚钱,盈利方法则不尽相同,但是作为公司都有相同三个环节:采购.销售和库存,这个怎么说呢?比如一个软件公司,要开发软件,需要开发环境吧, Windows 操作系统,数据库产品等,这你得买吧,那就是采购,开发完毕一个产品还要把产品推销出去,推销出去了大家才有钱赚,不推销出去大家都去喝西北风呀,既然有产品就必然有库存,软件产品也有库存,你总要拷贝吧,虽然是不需要占用库房空间,那也是要占用光盘或硬盘

JavaScript设计模式之策略模式(学习笔记)

在网上搜索“为什么MVC不是一种设计模式呢?”其中有解答:MVC其实是三个经典设计模式的演变:观察者模式(Observer).策略模式(Strategy).组合模式(Composite).所以我今天选择学习策略模式. 策略模式:定义了一系列家族算法,并对每一种算法单独封装起来,让算法之间可以相互替换,独立于使用算法的客户. 通常我并不会记得“牛顿第一定律”的具体内容,所以我也难保证我会对这个定义记得多久……用FE经常见到的东西来举个例子说明一下: $("div").animation(

设计模式-12 MVC模式

一 MVC设计模式 MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式,它是一个存在于服务器 表达层的模型,它将应用分开,改变应用之间的高度耦合 MVC设计模式将应用程序分离为3个主要的方面:Model,View和Controller 1 Model Model代表了描述业务路逻辑,业务模型.数据操作.数据模型的一系列类的集合.这层也定义了数据修改和操作的业务规则. 2 View View代表了UI组件,像CSS,JQuery,html等.他只负责展示从co

Android 设计模式之MVC模式

说到Android设计模式的MVC模式,估计很多人都是比较熟悉了,这里深入了解一下MVC到底是怎么回事,以ListView为例子讲解. 一.深入理解MVC概念 MVC即Model-View-Controller.M:逻辑模型,V:视图模型,C:控制器. MVC模式下,系统框架的类库被划分为3种:模型(Model).视图(View).控制器(Controller).模型对象负责建立数据结构和相应的行为操作处理.视图对象负责在屏幕上渲染出相应的图形信息展示给用户看.控制器对象负责截获用户的按键和屏幕

我经历的前端开发模式进化史

萌芽 记得,在刚接触js那会儿,那时还没有专职的“前端开发”.当时的前端开发工作是由设计师(当时还叫“美工”)来完成的,在这种模式下,设计师需要完成页面的设计.切图.css.html,以及部分js交互的工作.这些完成的工作会成为设计资源的一部分被一并提供给开发人员,由于设计师对css.js了解的很有限,他们完成的页面代码会有许多问题还需要开发来调整和修改,当时的页面还都是后端同步渲染输出的,基本上大伙儿也只会改改一些js表单验证,常用的css属性.所以在这个时期,前端工具.类库.框架是几乎没有的