一、我的理解
前端控制器模式将所有请求集中到一个类处理,由该类依据不同的请求来执行相应的动作。
二、实现方式
类似于分发模式,前端控制器类接收请求,然后判断请求类型,根据请求类型调用响应的接口。
三、实例
Java实例
StudentView类:前端页面一
package com.study.dp.frontcontroller;
public class StudentView {
public void show() {
System.out.println("Displaying Student Page");
}
}
HomeView类:前端页面二
package com.study.dp.frontcontroller;
public class HomeView {
public void show() {
System.out.println("Displaying Home Page");
}
}
Dispatcher类:分发器,根据不同的请求展示不同的页面
package com.study.dp.frontcontroller;
public class Dispatcher {
private StudentView studentPage;
private HomeView homePage;
public Dispatcher() {
studentPage = new StudentView();
homePage = new HomeView();
}
public void dispatch(String request) {
if(request.equalsIgnoreCase("STUDENT")) {
studentPage.show();
}else {
homePage.show();
}
}
}
FrontController类:前端控制器,响应用户请求
package com.study.dp.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);
}
}
}
Demo类:测试类
package com.study.dp.frontcontroller;
public class Demo {
public static void main(String[] args) {
FrontController frontController = new FrontController();
frontController.dispatchRequest("HOME");
frontController.dispatchRequest("STUDENT");
}
}