前端控制器模式(front controller pattern)是用来提供一个集中的请求处理机制,所有的请求都将由一个单一的处理程序处理。该处理程序可以做认证/授权/记录日志,或者跟踪请求,然后把请求传给相应的处理程序。以下是这种设计模式的实体。
我们将创建 frontcontroller、dispatcher 分别当作前端控制器和调度器。homeview 和 studentview 表示各种为前端控制器接收到的请求而创建的视图。
frontcontrollerpatterndemo,我们的演示类使用 frontcontroller 来演示前端控制器设计模式。
创建视图。
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"); } }
创建调度器 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(); } } }
创建前端控制器 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); } } }
使用 frontcontroller 来演示前端控制器设计模式。
frontcontrollerpatterndemo.java
public class frontcontrollerpatterndemo { public static void main(string[] args) { frontcontroller frontcontroller = new frontcontroller(); frontcontroller.dispatchrequest("home"); frontcontroller.dispatchrequest("student"); } }
验证输出。
page requested: home user is authenticated successfully. displaying home page page requested: student user is authenticated successfully. displaying student page