前端控制器模式
基本介绍
1.提供一个集中的请求处理机制,所有的请求都将由一个单一的处理程序处理,该处理程序可以做认证 / 授权 / 记录日志,或者跟踪请求,然后把请求传给相应的处理程序
2.角色
(1)Front Controller:前端控制器,聚合 Dispatcher,处理应用程序所有类型请求的单个处理程序,应用程序是基于 web / 桌面的应用程序
(2)Dispatcher:调度器,Front Controller 可能使用一个 Dispatcher 对象来调度请求到相应的具体处理程序
(3)View:视图,为请求而创建的对象
代码示例
public class Client {//客户端
public static void main(String[] args) {
FrontController frontController = new FrontController();
frontController.dispatchRequest("view1");
frontController.dispatchRequest("view2");
frontController.dispatchRequest("view3");
}
}
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);
}
}
}
class Dispatcher {//调度器
private View1 view1;
private View2 view2;
public Dispatcher() {
view1 = new View1();
view2 = new View2();
}
public void dispatch(String request) {
if (request.equalsIgnoreCase("view1")) {
view1.show();
} else if (request.equalsIgnoreCase("view2")) {
view2.show();
} else {
System.out.println("Error:request");
}
}
}
class View1 {
public void show() {
System.out.println("Displaying View1 Page");
}
}
class View2 {
public void show() {
System.out.println("Displaying View2 Page");
}
}

浙公网安备 33010602011771号