>>分享Java编程技术,对《Java面向对象编程》等书籍提供技术支持 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 26455 个阅读者 刷新本主题
 * 贴子主题:  Java设计模式:前端控制器模式 回复文章 点赞(0)  收藏  
作者:sunshine    发表时间:2019-08-10 14:16:21     消息  查看  搜索  好友  邮件  复制  引用

  

前端控制器模式

     前端控制器模式(Front Controller Pattern)是用来提供一个集中的请求处理机制,所有的请求都将由一个单一的处理程序处理。该处理程序可以做认证/授权/记录日志,或者跟踪请求,然后把请求传给相应的处理程序。以下是这种设计模式的实体。    
  • 前端控制器(Front Controller) - 处理应用程序所有类型请求的单个处理程序,应用程序可以是基于 web 的应用程序,也可以是基于桌面的应用程序。
  • 调度器(Dispatcher) - 前端控制器可能使用一个调度器对象来调度请求到相应的具体处理程序。
  • 视图(View) - 视图是为请求而创建的对象。

实现

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

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

    点击在新窗口中浏览原图
CTRL+鼠标滚轮放大或缩小

步骤 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

     执行程序,输出结果:

Page requested: HOME

User is authenticated successfully.

Displaying Home Page

Page requested: STUDENT

User is authenticated successfully.

Displaying Student Page






程序猿的技术大观园:www.javathinker.net



[这个贴子最后由 flybird 在 2020-02-21 11:56:25 重新编辑]
  Java面向对象编程-->输入与输出(上)
  JavaWeb开发-->JSP技术详解(Ⅱ)
  JSP与Hibernate开发-->数据库事务的概念和声明
  Java网络编程-->XML数据处理
  精通Spring-->Vue组件开发基础
  Vue3开发-->Vue CLI脚手架工具
  Java小白们的练手大餐:100道编程题面试题精讲(最新推出)
   JAVA进阶之IO模型深入解析
  Java内存设置详解(含内存溢出问题的解决)
  JDK自带JVM调优工具的用法
  购书咨询
  java万年历简单制作
  Eclipse使用指南:创建Java项目的步骤
  Java设计模式:组合模式
  正则表达式性能调优
  Java入门实用代码:获取所有线程
  Java入门实用代码:获取本机IP地址及主机名
  Java 入门实用代码:数组扩容
  Java判断一个字符是否为中文字符
  Java入门实用代码:删除一个文件目录
  java使用gzip实现文件解压缩示例
  更多...
 IPIP: 已设置保密
楼主      
1页 0条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


中文版权所有: JavaThinker技术网站 Copyright 2016-2026 沪ICP备16029593号-2
荟萃Java程序员智慧的结晶,分享交流Java前沿技术。  联系我们
如有技术文章涉及侵权,请与本站管理员联系。