文档章节

Java设计模式(3):前端控制器模式

博为峰教研组
 博为峰教研组
发布于 2017/05/03 19:38
字数 501
阅读 44
收藏 0

前端控制器模式(Front Controller Pattern)提供一种可以集中管理请求的控制器,即所谓的前端控制器,该前端控制器用于响应客户请求,为每个请求寻找匹配的处理器。在这种模式中,控制器提供一个处理不同请求的控制点,这些控制点包括日志记录,安全事务,错误处理和响应内容的生成(如视图),通过将这些工作集中在一点进行处理,大大地减低了Java代码量,同时这种机制也可以减少视图模块的程序逻辑,保证了在 不同请求之间可以重用大量的逻辑代码。

前端控制器模式主要有三类组件构成:

前端控制器(Front Controller)

处理应用程序所有类型请求的单个处理程序,应用程序可以是基于 web 的应用程序,也可以是基于桌面的应用程序。

处理器(Handler)

前端控制器可能使用一个处理器对象来处理请求到相应的具体处理程序。

视图(View)

视图是为请求而创建的对象。

 

下面的示例我们将创建 FrontController,Handler 分别当作前端控制器和处理器。HomeView 和 LoginView 表示各种为前端控制器接收到的请求而创建的视图。FrontControllerPatternDemo是演示类使用 FrontController 来演示前端控制器设计模式。

 

示例:

public abstract class View {

public abstract void show();

 

}

public class HomeView extends View {

@Override

public void show() {

   System.out.println("显示主页视图");

}

}

public class LogInView extends View {

@Override

public void show() {

   System.out.println("显示登陆视图");

}

}

public class Dispatcher {

private HomeView homeView;

private LogInView logInView;

 

public Dispatcher(){

homeView=new HomeView();

logInView=new LogInView();

}

 

public void doDispacher(String request) {

if("HOME".equals(request)){

homeView.show();

}else{

logInView.show();

}

}

}

public class FrontController {

 

private Dispatcher dispatcher;

 

public FrontController(){

dispatcher=new Dispatcher();

}

public boolean authenticate() {

System.out.println("通过认证");

return true;

 

}

public void dispatcher(String request){

if( authenticate()){

 dispatcher.doDispacher(request);

}

}

}

public class FrontControllerPatternDemo {

public static void main(String[] args) {

FrontController controller=new FrontController();

controller.dispatcher("HOME");

}

}

 

 

© 著作权归作者所有

上一篇: ES6的const命令
博为峰教研组
粉丝 50
博文 1224
码字总数 479077
作品 0
黄浦
程序员
私信 提问
设计模式 2014-12-19

book: 阎宏《JAVA与模式》 架构设计栏目 http://blog.csdn.net/enterprise/column.html 概要: http://bbs.csdn.net/forums/Embeddeddriver 23种设计模式分别是: 1.单例模式 2.工厂方法模式...

jayronwang
2014/12/19
0
0
设计模式15——Template Method设计模式

Template Method模板方法设计模式定义一个操作中算法的骨架,将具体步骤的执行延迟到子类中实现。Java中的抽象类就是使用了模板方法设计模式。模板方法设计模式结构如下: 以文档处理为例,T...

小米米儿小
2014/01/24
0
0
java中23种设计模式(上)

参考网址:http://blog.csdn.net/zhangerqing 资源:http://download.csdn.net/detail/zhangerqing/4835830 设计模式(Design Patterns) 设计模式(Design pattern)是一套被反复使用、多数...

青涩的梦
2018/06/26
0
0
简单工厂、工厂方法、抽象工厂、策略模式、策略与工厂的区别

转载:原地址http://www.cnblogs.com/zhangchenliang/p/3700820.html 简单工厂、工厂方法、抽象工厂、策略模式、策略与工厂的区别 结合简单示例和UML图,讲解工厂模式简单原理。 一、引子 话说...

法斗斗
2018/05/08
0
0
Java之美[从菜鸟到高手演变]之设计模式

设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代...

只想一个人静一静
2014/02/25
0
2

没有更多内容

加载失败,请刷新页面

加载更多

ucos 中断,调度,互斥 分析

实际场景: 首先有个标志位 pps_flag,是一个全局变量。有两个地方会用到这个变量,一个是pps信号触发的外部中断,一个是ucos的任务。当pps信号触发外部中断的时候pps_flag被置为2,当任务里面...

青春无极限
25分钟前
1
0
spark streaming、flink和storm区别浅析

1. 介绍 这三个计算框架常常被拿来比较。从我的角度来看,三者的比较可以分为两类(mini-batches vs. streaming)。spark streaming属于微批量的伪流式准实时计算框架(spark本身属于批处理框架...

xiaomin0322
33分钟前
2
0
存储过程无参数,in,out ,in out 的用法

select * from scott.emp where empno=7839 or empno=7566 select * from emp5 create table emp5 as select * from scott.emp -----------------in create or replace procedure raisesalar......

颜丽
今天
2
0
SOFAJRaft-RheaKV 是如何使用 Raft 的 | SOFAJRaft 实现原理

SOFAStack Scalable Open Financial Architecture Stack 是蚂蚁金服自主研发的金融级分布式架构,包含了构建金融级云原生架构所需的各个组件,是在金融场景里锤炼出来的最佳实践。 本文为《剖...

SOFAStack
今天
2
0
同一父类,不同子类集合可判断该元素组是否相等

判断集合是否相等时只关注元素是否相等,无需考虑类型,即同调父类AbstractList里的equal方法 源码如下: public boolean equals(Object o) { if (o == this) return true; if (!(o instance...

恋码之子
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部