前端控制器设计模式用于提供集中的请求处理机制,以便所有请求都由单个处理程序处理.此处理程序可以执行身份验证/授权/日志记录或跟踪请求,然后将请求传递给相应的处理程序.以下是此类设计模式的实体.
前端控制器 - 单个处理程序各种请求来到应用程序(基于Web或基于桌面).
调度程序 - 前端控制器可以使用调度程序可以将请求分派给相应的特定处理程序的对象.
查看 - 视图是发出请求的对象.
实施
我们将创建一个 FrontController 和 Dispatcher 相应地充当前端控制器和调度员. 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.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){ //log each request trackRequest(request); //authenticate the user 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: HOMEUser is authenticated successfully.Displaying Home PagePage requested: STUDENTUser is authenticated successfully.Displaying Student Page
免责声明:以上内容(如有图片或视频亦包括在内)有转载其他网站资源,如有侵权请联系删除
-
设计总结|如何更好地表达活动品牌?
-
谈谈“目标思维”的落地
编辑导读:我们在做数据分析之前,一定要搞清楚需求方的目标到底是什么,要根据目标来重新定义业务方提出的问题,这就是目标思维。目标思维有多重要呢?应该如何落地呢...
-
在线教育平台竞品分析:网易云课堂vs腾讯课堂
本文从移动端出发,对当前比较热门的两款在线教育平台软件-网易云课堂和腾讯课堂进行比较和分析,不足之处还请大家多提意见。 市场分析 随着国内互联网技术的发展和移...
-
即学即用|父亲节活动的4种运营策略
-
B端产品经理和体验设计师的工作职责边界梳理
-
豆果美食电商分支用户体验报告及建议
-
数据分析师如何提高工作效率
在我们的日常工作中,提高工作效率是每个岗位都需要实现的,在工作中,面对比较凌乱的事情时,首先我们需要梳理清楚,按重要级进行开展;本文作者分享了关于...
-
2016中国云计算SaaS移动办公平台年度综合报告
-
网易大布局教育事业:网易公开课、网易云课堂和MOOC分析
-
一篇文章搞懂语音交互的来龙去脉